Wave参照の方法
今回はMacroやユーザー定義関数(Function)を作成する際に、非常に重要なWave参照の話です。
非常にわかりづらいですが、とても大切なので、まずは見様見真似でやってみましょう。
①:Macroで直接wave名を書く、非常に簡単な方法
②:MacroでStringと$でwaveを指定する方法
③:Function
の三パターンあります。
例えばwave0というwaveが存在する状況で
Display wave0
wave0+=1 (wave全体への四則演算)
wave0[1]=1 (wave各成分へ代入)
Duplicate/O wave0,wave1
Interpolate2/T=1/N=5000/Y=wave0_L xaxis, wave0
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 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になる)
マクロの組み方Part9(If-else文、比較演算子、論理演算)
今回はプログラミングでよく使うIf文について紹介します。
条件分岐の時に用いるのがIf文で
条件成立の場合に実行する内容
else
条件不成立の場合に実行する内容
endif
の形で用います。
他のプログラミングで用いるelseifはマクロでは用いることが出来ません。(ユーザー定義関数では用いることができます。)
Variable a,b,c,d
Prompt a,"Enter number freely"
Prompt b,"Enter number freely"
Prompt c,"Enter number freely"
Prompt d,"Enter number freely"
if(a==b && c==d)
print "same!!"
else
print "Not same!!"
endif
End
以下に条件としてよく用いる演算子を載せておきます。
参考にしてください。
比較演算子
a!=b :aとbが等しくない
a>b :aよりbの方が小さい
a<b :aよりbの方が大きい
a>=b :aはb以下
a<=b :aはb以上
論理演算子
a==b && c==d :a=b”かつ”c=d