Igorの解説とか

このブログはWavemetrics社が開発および販売しているIgorについて解説するブログです。

Wave参照の方法

今回はMacroやユーザー定義関数(Function)を作成する際に、非常に重要なWave参照の話です。

非常にわかりづらいですが、とても大切なので、まずは見様見真似でやってみましょう。

 

①:Macroで直接wave名を書く、非常に簡単な方法

②:MacroでStringと$でwaveを指定する方法

③:Function

 

の三パターンあります。

 

 

例えばwave0というwaveが存在する状況で

 

マクロで直接wave名を指定する場合

Display wave0

wave0+=1    (wave全体への四則演算)

wave0[1]=1   (wave各成分へ代入)

Duplicate/O wave0,wave1

Interpolate2/T=1/N=5000/Y=wave0_L xaxis, wave0

直接入力する場合は何も考えずに、wave名を書けば良い

  

MacroでStringを用いて指定する場合

String Refwavestr="wave0"

Display $Refwavestr

$Refwavestr+=1      (wave全体への四則演算)

$Refwavestr[1]=1     (wave各成分へ代入)

Duplicate/O $Refwavestr,wave1

 

String RefwaveIpstr=Refwavestr+"_L"   (Interpolate後のwave名)

String RefwaveXaxisstr="xaxis" (Interpolateをするx軸名)

Interpolate2/T=1/N=5000/Y=$RefwaveIpstr $RefwaveXaxisstr,$Refwavestr

Stringで指定する場合は、$+(waveのstring) とすれば良い

 

Functionの場合

String Refwavestr="wave0"

Wave Refwave=$Refwavestr

Display Refwave・・・△

Display $Refwavestr・・・◯

Refwave+=1   (wave全体への四則演算)・・・◯

$Refwavestr+=1・・・☓

Refwave[1]=1 (wave各成分へ代入)・・・◯

$Refwavestr[1]=1・・・☓

 

String Duplicate_targetstr="wave1"

Wave Duplicate_target=$Duplicate_targetstr

Duplicate Refwave,Duplicate_target・・・△

Duplicate Refwave,$Duplicate_targetstr・・・◯

 

 

String RefwaveIpstr=Refwavestr+"_L"   (Interpolate後のwave名)

Wave RefwaveIp=$RefwaveIpstr

String RefwaveXaxisstr="xaxis" (Interpolateをするx軸名)

Wave RefwaveXaxis=$RefwaveXaxisstr

 

 

Interpolate2/T=1/N=5000/Y=$RefwaveIpstr RefwaveXaxis,Refwave・・・△

 

Interpolate2/T=1/N=5000/Y=$RefwaveIpstr $RefwaveXaxisstr,Refwave・・・△

Interpolate2/T=1/N=5000/Y=$RefwaveIpstr $RefwaveXaxisstr,$Refwavestr・・・◯

 

 

Interpolate2/T=1/N=5000/Y=RefwaveIp RefwaveXaxis,Refwave・・・☓

(出力が"RefwaveIp"という名前のwaveになる)

基本的には数値代入の場合はWave=$StringでWaveを指定、他の場合は$Stringで指定する。ただし、おそらくYフラグで出力するときに$がない場合は、"Y="以下の名前のwaveを作成し、出力するようになっているので注意が必要。