Igorの解説とか

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

マクロの組み方Part12(Cursorを用いる その2)

前回の記事  マクロの組み方Part11(Cursorを用いる その1) - Igorの解説とか で出てきた、hcsrとxcsrの違いについて解説します。

 

 

 

まずは

Make/O For_check_x,For_check_y,For_check_2
For_check_x=x+1
For_check_y=x
For_check_2=x
Setscale/p x,1,1,For_check_2
Display For_check_y
Display For_check_y vs For_check_x
Display For_check_2

としてみましょう。

便宜上

Display For_check_y で表示したグラフをA

Display For_check_y vs For_check_x で表示したグラフをB

Display For_check_2 で表示したグラフをC

とします。

そして、例えば0Point目にカーソルを合わせ

Print hcsr(A)
Print xcsr(A)

 と実行し、差を見てみましょう。

Aでは、両方とも0と表示されます。

Bでは、hcsrで1、xcsrでは0

Cでは、両方とも1と表示されます。

これらからわかるように(?)、hcsrでは、グラフ上のカーソルにおけるxの値。

xcsrは、カーソルが置かれたトレースに記憶されている、xの値。

という差があります。

For_check_2では、SetScaleコマンドを使ってxの値を記憶させたため、xcsrでも1が出力されます。

 

マクロの組み方Part11(Cursorを用いる その1)

 

まずはWaveを作成しましょう。

Make/O Ref_x,Ref_y,Target
Ref_x=2*x-13
Ref_y=x
Target=x
Display Ref_y vs Ref_x

f:id:Igorpro:20170501234639p:plain

 

 

このときの横軸の情報を、Targetに付け加えましょう。

 

カーソルを使う その1
Macro CursorMacro()
String Refx_str="Ref_x"
String Refy_str="Ref_y"
String Target_str="Target"
Display $Refy_str vs $Refx_str
//ここまで準備
Variable Ref_0,Ref_1   //Ref_0が0Point目におけるxの値
Cursor A $Refy_str 0   //0ポイント目にCursorAを置く
Ref_0=hcsr(A)  //Ref_0にCursorAのxの値を代入
Cursor A $Refy_str 1   //1ポイント目にCursorAを置く
Ref_1=hcsr(A)   //Ref_1にCursorAのxの値を代入
Setscale/p x,Ref_0,Ref_1-Ref_0,$Target_str  //Tartgetのx軸情報を入力
End

 

Cursor カーソルの種類 トレースの名前 何ポイント目にカーソルを置くか

 

hcsr(A)・・・カーソルAにおけるxの値
xcsr(A)・・・カーソルAにおけるxの値
(これらの違いについては次記事マクロの組み方Part12(Cursorを用いる2) - Igorの解説とかで)
pcsr(A)・・・カーソルAにおけるxのポイント数
vcsr(A)・・・カーソルAにおけるyの値
qcsr(A)・・・カーソルAにおけるyの値
zcsr(A)・・・等高線プロットやイメージプロットの時のカーソルAにおけるzの値

 

Setscale/p 軸(x or y),0Point目の値,Pointの間隔,Wave名
Setscale 軸(x or y),0Point目の値,最終Pointの値,Wave名

 

 

目次 サイト目次 - Igorの解説とか

前  マクロの組み方Part10(データのを連続でロード) - Igorの解説とか

次  マクロの組み方Part12(Cursorを用いる2) - Igorの解説とか