複素数を計算する.
c=complex(a) c=complex(a,b)
1行1列またはn行m列の倍精度実数行列, 実部.
a
が虚部を有する場合,
エラーが発生します.
1行1列またはn行m列の倍精度実数行列, 虚部 (デフォルト b=0).
b
が虚部を有する場合,
エラーが発生します.
n行m列の倍精度複素行列, 複素数.
c=complex(a) は, a
を実部,
0 を虚部とする複素数を作成します.
c=complex(a,b) は実部a
,
虚部b
の複素数を作成します.
この関数は,
特に複素数演算が%inf
または%nan
のような特定の浮動小数点数と競合する場合に,
a+%i*b
のような式の代替手段となります.
以下の例では,実部と虚部から複素数を生成します.
a
のみが指定された場合, 虚部は0に設定されます.
a
がスカラーで b
が
行列の場合, 結果 c
は,
b
と同じ大きさとなります.
同様に, b
がスカラーで a
が行列の場合, 結果 c
は
a
と同じ大きさになります.
a
と b
が
異なる大きさの行列の場合,以下のセッションのような
エラーが発生します.
-->complex(ones(2,3),ones(4,5)) !--error 10000 complex: Incompatible input arguments #1 and #2: Same sizes expected. at line 33 of function complex called by : complex(ones(2,3),ones(4,5))
complex
関数の目的は,NaNや無限大のような
IEEE 浮動小数点数を管理することです.
以下の例では,複素数演算を使用する場合,
実部と虚部が複合体となる複素数を作成するのは
容易ではないことを示します.
これは,%i
と %inf
の積が
(0+%i) * (%inf+%i*0)
と評価されるためです.
この結果は,中間式0*%inf
,つまり,
%nan
となります.
-->%inf+%i*%inf ans = Nan + Inf
この問題の解決策は complex
関数を使用することです.
-->complex(%inf,%inf) ans = Inf + Inf