Igor Pro テクニカルサポート
更新日: 17/09/14

ウェーブの連結と分割

 

ウェーブの連結

Igor Pro では、描くグラフのタイプによって、必要なウェーブの次元/形式が異なります。


Table グラフタイプと必要なウェーブの次元/形式

グラフタイプ 必要なウェーブの次元/形式
XYプロット 1次元ウェーブ
2次元以上のウェーブの 1次元ウェーブ相当の要素
等高線プロット 1次元ウェーブ×3
XYZマトリクス (n×3 の 2次元ウェーブ)
Z値マトリクス (m×n の 2次元ウェーブ)
イメージプロット 2次元ウェーブ
3次元ウェーブ
Gizmo Path 2次元ウェーブ (n×3 の 2次元ウェーブ)
Gizmo Surface 2次元ウェーブ
Gizmo Voxelgram 3次元ウェーブ

一方、テキストファイルから読み込んだデータは1次元のウェーブであることが多いため、グラフを描くためには、1次元ウェーブを適宜連結することで、必要な次元のウェーブに変換する操作が必要です。Igor Pro には、以前から Concatenate操作関数が用意されており、複数のウェーブを任意の次元に統合することは可能でしたが、UI の用意はありませんでした。

Igor Pro 7 には、Concatenate操作関数に対応するメニューコマンド (データメニュー>ウェーブを連結) が搭載されました。

データメニューに追加された
「ウェーブを連結」と「ウェーブを分割」

 

例えば、次のような100ポイントのウェーブ9個を用意します。

make/o/n=100 wave1=sin(x/5)
make/o/n=100 wave2=sin(x/10)
make/o/n=100 wave3=sin(x/15)
make/o/n=100 wave4=sin(x/20)
make/o/n=100 wave5=sin(x/25)
make/o/n=100 wave6=sin(x/30)
make/o/n=100 wave7=sin(x/35)
make/o/n=100 wave8=sin(x/40)
make/o/n=100 wave9=sin(x/45)

これを2次元のウェーブ (マトリクス) wave2D に連結するには、Concatenate操作関数を使って、

Concatenate/DL/NP=1 {wave1,wave2,wave3,wave4,wave5,wave6,wave7,wave8,wave9},wave2D

というコマンドを実行します。連結するウェーブが増えると、連結するウェーブをコンマ区切りで列挙するのがなかなか大変ですが、データメニューの「ウェーブを連結」コマンドを使うと簡単に実行できます。

ウェーブを連結ダイアログ

 

なお、Concatenate 操作関数でも出力ウェーブを上書きする /O フラグは利用できますが、「ウェーブを連結」ダイアログからは指定できません。

上記の操作で作成した2次元ウェーブをイメージプロットに表示すると次のようなプロットが得られます。9本の1次元ウェーブがまとめられていることが確認できます。

 

 

ウェーブの分割

一方、連結してしたウェーブを低次元に分割するには SplitWave操作関数を使います。これはバージョン7 で追加された操作関数です。次元を指定して、指定したデータフォルダに、指定した Prefix で始まるウェーブに分割できます。例えば、

SplitWave/N=out wave2D

と実行すると、2次元ウェーブ wave2D を1次元下の1次元ウェーブで out から始まるウェーブ (out1、out2、out3, …) に分割することができます。

明示的に1次元ウェーブと指定する場合は、

SplitWave/SDIM=1/N=out wave2D

と /SDIM フラグを指定します。

データメニューの「ウェーブを分割」コマンドを利用すると、次のようなダイアログを使って指定することができます。

ウェーブを分割ダイアログ

 

SplitWave 操作関数は RGBカラーの画像データ (3次元ウェーブ) から、任意の成分 (R,G,B) のレイヤーだけの2次元ウェーブを抽出する用途にも利用できますし、CT の画像データのように多層の画像データをレイヤーごとに分解することもできますね。