複素数の取り扱い
IGORでは、A + i B といった複素数を扱う事ができる。 まず、これまでと同様に、「実数部」と「虚数部」を表す wave を作成してみよう。これらはまだ通常の実数 wave だ。
・Make/D/O realWave,imagWave
今回は実数部および虚数部に対して以下のようなデータをセットしてみた。
・realWave=-p
・imagWave=p+1
次のコマンドにより、表に出してみよう。
・Edit realWave,imagWave
■さて、IGORで複素数を表す wave をどのようにして作成したらいいのだろうか。それは、メニューのMake waves … コマンドを呼び出した後、「Complex」にチェックを入れておけばよい。
これをコマンドで表すと以下のようになる。
・Make/D/C/O amp
ごらんの通り複素数を表すフラッグは、/Cだ。
さて、複素数 wave に値を代入するためにはどうしたらいいのだろうか。それは、cmplx関数を用いる。
・amp=cmplx(realWave,imagWave); edit amp
すでに作成した二つの実数 wave realWaveとimagWaveを、複素数 wave であるampに代入する命令だ。
edit命令によって、以下のような表が作成されるはずだ。
ここでこの表は、real および cmplxの2列からなる表である事がわかる。
続いて、amp の複製 wave として、intを作成しよう。
・Duplicate/O amp int
・int=amp*conj(amp)
・Edit int
■新たな命令として、上ではconj 関数を用いた。これは複素共役を意味し、
Amplitude = REAL + i IMAGINARY
Intensity = Amplitude x Amplitude* = ( REAL + i IMAGINARY ) x ( REAL – i IMAGINARY )
= REAL^2 + IMAGINARY ^2
ような感じでフーリエ振幅や強度の計算に用いられる。
まだこの段階では、wave には実数部のみが残ったとはいえ、wave の型は以下の図のような「複素数型」だ。
そこで、実数型 wave に変換しよう。これは、IGOR の Dataメニューにある、Redimension waves … から行える。real から complex へ wave のType を変更しよう。ここでは様々な wave のタイプ変換が行える。
上記の操作をコマンドで表すと以下のようになる。コマンドラインでこれを打ち込んでもOKだ。
・Redimension/R int