「GNU Octave/Octファイル」の版間の差分
削除された内容 追加された内容
Bethlehem4 (トーク | 投稿記録) M 参照の期間変更 |
Bethlehem4 (トーク | 投稿記録) 複数入出力 |
||
76 行
}
</source>
=== 複数入出力 ===
<source lang="cpp">
#include <octave/oct.h>
DEFUN_DLD (oct_complex, args, , "[cx,cy,cz,Nc,Nr]=oct_complex(ca)\n")
{
octave_value_list retval;
int nargin = args.length();
if (nargin != 1) {
print_usage ();
return retval;
}
ComplexMatrix cx(args(0).complex_matrix_value());//Input 0
ComplexMatrix cy(args(0).complex_matrix_value());//for Output 1
ComplexMatrix cz(args(0).complex_matrix_value());//for Output 2
octave_idx_type Nc = cx.columns();
octave_idx_type Nr = cx.rows();
cy=real(cx);
for (octave_idx_type i = 0; i < Nc; i++) {
cz(i) = Complex(real(cx(i))*real(cx(i)),imag(cx(i))*imag(cx(i)));
}
retval(0)=cx;
retval(1)=cy;
retval(2)=cz;
retval(3)=Nc;
retval(4)=Nr;
return retval;
}
</source>
実行例
<source lang="cpp">
GNU Octave, version 3.8.1
Octave was configured for "i686-w64-mingw32".
> mkoctfile oct_complex.cc
> ca=[1+j 2+j];
> [cx,cy,cz,Nc,Nr]=oct_complex(ca)
⇒
cx =
1 + 2i 3 + 4i
cy =
1 3
cz =
1 + 4i 9 + 16i
Nc = 2
Nr = 1
</source>
=== ベクトル ===
89 ⟶ 137行目:
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;
|