「GNU Octave/Octファイル」の版間の差分

削除された内容 追加された内容
複数入出力
順番変更
51 行
</source>
 
 
=== ベクトル ===
<source lang="cpp">
#include <octave/oct.h>
DEFUN_DLD (oct_ReturnTwoArrays, args, ,
"[C,D]=oct_ReturnTwoArrays(A,B);,A,B,C and D are arrays.\n")
{
octave_value_list retval;
int nargin = args.length ();
if (nargin != 2) {
print_usage();
} else {
//NDArray A = args(0).array_value();
//NDArray B = args(1).array_value();
NDArray A (args(0).array_value());
NDArray B (args(1).array_value());
if ( !error_state ) {
retval(0) = A+B;
retval(1) = A-B;
}
}
return retval;
}
</source>
 
=== 行列 ===
<source lang="cpp">
#include <octave/oct.h>
DEFUN_DLD (MatVecProd, args, ,
"[Y,M,N]=MatVecProd(A,X); A is a Matrix, X and Y are vectors.\n")
{
octave_value_list retval;
//Matrix A = args(0).matrix_value();
//NDArray X = args(1).array_value();
Matrix A (args(0).matrix_value());
NDArray X (args(1).array_value());
const int M=A.rows;
const int N=A.colums;
Matrix Y(M,1);
 
int nargin = args.length();
if (nargin != 2) {
print_usage();
} else {
if ( !error_state ) {
for (int m=0; m<M; ++m) {
for (int n=0; n<N; ++n) {
Y(m)=A(m,n)*X(n);
}
}
}
retval(0)=Y;
retval(1)=M;
retval(2)=N;
}
return retval;
}
</source>
=== 複素数 ===
* [http://lists.gnu.org/archive/html/help-octave/2011-06/msg00312.html Ref]
124 ⟶ 182行目:
Nc = 2
Nr = 1
</source>
 
=== ベクトル ===
<source lang="cpp">
#include <octave/oct.h>
DEFUN_DLD (oct_ReturnTwoArrays, args, ,
"[C,D]=oct_ReturnTwoArrays(A,B);,A,B,C and D are arrays.\n")
{
octave_value_list retval;
int nargin = args.length ();
if (nargin != 2) {
print_usage();
} else {
//NDArray A = args(0).array_value();
//NDArray B = args(1).array_value();
NDArray A (args(0).array_value());
NDArray B (args(1).array_value());
if ( !error_state ) {
retval(0) = A+B;
retval(1) = A-B;
}
}
return retval;
}
</source>
 
=== 行列 ===
<source lang="cpp">
#include <octave/oct.h>
DEFUN_DLD (MatVecProd, args, ,
"[Y,M,N]=MatVecProd(A,X); A is a Matrix, X and Y are vectors.\n")
{
octave_value_list retval;
//Matrix A = args(0).matrix_value();
//NDArray X = args(1).array_value();
Matrix A (args(0).matrix_value());
NDArray X (args(1).array_value());
const int M=A.rows;
const int N=A.colums;
Matrix Y(M,1);
 
int nargin = args.length();
if (nargin != 2) {
print_usage();
} else {
if ( !error_state ) {
for (int m=0; m<M; ++m) {
for (int n=0; n<N; ++n) {
Y(m)=A(m,n)*X(n);
}
}
}
retval(0)=Y;
retval(1)=M;
retval(2)=N;
}
return retval;
}
</source>