Igor:for文を用いてwaveを複数作成する

コメントをどうぞ


C言語でおなじみのfor文を用いてwaveを複数作成する方法を述べる。
後で参照しやすいようにwave名も工夫する。

新規でプロシージャを作成し,for文の構文を確認する。

以下の関数test()を作成する。

Function test() //testという関数作成
    Variable i //変数定義
    for(i=0;i<5;i+=1) //i=0からi<5まで+1ずつ増加
        print i   //iの値を出力
        print “wave”+num2str(i) //数値変数iを文字列に
    endfor  //for文終了
End    //関数終了

print “wave”+num2str(i)について補足。
num2strというコマンドを利用して,数値変数iを文字列に変換する。
そして”wave”という文字列の後につなげることで,
wave1,wave2,…wave9となるようにし,画面に出力する。

エクスペリメントプロシージャでtest()を実行後の結果は次のようになる。

for文の確認

for文の確認

これを踏まえて,waveの作成を行う。

waveの作成はMakeというコマンドを用いる。
Make /N=10 wave2
とすることで,wave2という名前で10行のwaveが作成される。
ここで,先ほど述べたことを応用して,
Make /N=10 $(“wave”+num2str(i))
とする。
$というのは,“文字列をwaveの参照に変換する”コマンドである。
http://www.hulinks.co.jp/support/igor/programming/p_0313.html

作成したwaveをテーブルに追加する。
AppendToTable /O $(“wave”+num2str(i))

次のようにtestという関数を作成する。
Function test()
   Variable i  //変数定義
   for(i=0;i<5;i+=1) //i=0からi<5まで+1ずつ増加
       Make /N=8 /O $(“wave”+num2str(i))  //waveの作成
       AppendToTable /O $(“wave”+num2str(i)) //waveをテーブルに追加
    endfor   //for文終了
End

実行後の結果は次のようになる。

for文を利用したwaveの作成

for文を利用したwaveの作成

Igor:waveの読み込み2

コメントをどうぞ


前回のIgor:waveの読み込みでは,数値データのみの読み込みを行った。
本稿では,ある列にテキストデータがあるデータを読み込む。
例として,以下の図のcsvファイルを読み込む。

読み込むcsvファイルの例
読み込むcsvファイルの例

 

前回のコマンド
LoadWave /J /E=2
では3列目のテキストデータ列が読み込めない。
フラグとして,
/B=”F=0;F=0;F=-2;”
を追加する。
/B“個別の列の特性を指定する”フラグである。
そして,F=<>により,列のデータフォーマットを指定する。

-2 テキスト。
-1 フォーマット不明。Igor がフォーマットを推論。
0 から 5 数値
6 日付
7 時刻
8 日付/時刻
9 8進数
10 16 進数

それぞれの列はセミコロン“;”で区切る。

またFの他に
N=” “とすることで列名を指定できる。
同一列での特性指定の追加する際にはカンマで区切る。
LoadWave /J /E=2 /B=”F=0;F=0;F=-2,N=Day”

 

コマンド実行後のwaveプレビュー
コマンド実行後のwaveプレビュー

列名は”Day”とした。

waveの読み込み完了
waveの読み込み完了

Igor:waveを読み込む

コメントをどうぞ


他のアプリケーションソフトで作成したデータファイルをIgorに読み込む方法を記述する。

例として,以下のようなcsvファイルを読み込む。

csvファイルの例

読み込むcsvファイルの例

読み込みには,
LoadWaveというコマンドを用いる。
csvファイルはテキストデータであるので,
/Jという“読み込み対象がテキストデータである”ことを意味するフラグを用いる。
また,読み込んだwaveをテーブルに表示させるために,
/E=2という“waveを既存のテーブルに追加し表示する”フラグを用いる。
/E=1は“新規のテーブルを作成しwaveを表示する”フラグ。

LoadWave /J /E=2

LoadWave実行

LoadWaveの実行

ファイルタイプとして,csv形式を選択すると,今回の読み込み対象である”Book1.csv”が表示されるため選択する。

読み込んだwaveのプレビューが表示される。

読み込んだwaveのプレビュー

読み込んだwaveのプレビュー

wave名を変更したり,スキップする行をしてしたりすることができる。
Loadをクリックすると,読み込んだwaveがテーブルに表示される。

waveの読み込みが完了し,テーブルに表示される。

waveの読み込み完了

細かい設定は,HULINKSのホームページに詳しい。
http://www.hulinks.co.jp/support/igor/reference/operations/LoadWave.html

Igor : waveをファイルに保存する

コメントをどうぞ


前項では,waveを作成する方法を書いたが,本稿では,waveの内容をファイルに出力する方法を記述する。

ファイルに出力するプログラム

ファイルに出力するプログラム

Variable f1
によってファイル参照番号を格納する数値変数を定義する。
C言語で言うところのFILE *fpと同じである。
Open f1
によってファイル保存先を指定するダイアログがでてくる。
C言語では,f1=fopen(“sample.csv”, “w”);といった感じで記述する。
fprintf f1,”wave1, wave2, wave3\r”
f1で指定したファイルに”wave1, wave2, wave3″と出力する。
\rは「改行」を表す。
wfprintf f1, “%g, %g, %g\r” wave1, wave2, wave3
f1で指定したファイルにwave1とwave2とwave3の内容を出力する。
wfprintfはwaveの内容を出力するコマンドだ。
%gはint, float, doubleそれぞれ自動で認識してテキストとして出力する。
関数の実行結果,保存先を指定するダイアログがでてくる。

ファイル保存ダイアログ
ファイル保存ダイアログ

ここでは,abc.txtと指定した。
保存ファイルを開いた結果が下図である。

wave出力結果
wave出力結果

 

コマンドの詳細はHurinks社のWEBページに詳しい。

例えばOpenについては以下のリンクを参照
http://www.hulinks.co.jp/support/igor/reference/operations/Open.html

Igorプログラミング勉強:wave作成とグラフの見栄え設定

コメントをどうぞ


Igorでは一連のデータ列をwaveと呼ぶ。
グラフで言うとx軸やy軸のデータ列みたいなもの。
本稿ではプログラミングでwaveを作成して,それをグラフ化してみる。

新規でプロシージャを作成し,以下の関数(関数名:test)を記入。
Function test()
 Make /N=25 wave1, wave2, wave3 //25行のwave1, wave2, wave3 を作成
 wave1 = x
 wave2 = 2*x + 1
 wave3 = x*x
 AppendToTable wave1, wave2, wave3 //wave1, wave2, wave3をテーブルに追加
End

wave作成

waveの作成

Makeというコマンドがwaveを作成する/N=iがwaveの行数を指定する補助コマンド。
0行からi-1行までのi行を作成するという意味となる。
wave1, wave2, wave3というのがwaveの名前となる。
xは,i行目にiという値が入るように予めIgorで決まった変数である。
AppendToTableというのはその後に続くwaveをTableに表示するというコマンドである。

関数名test()と入力して,関数を実行した結果が下図。

Tableに作成したwaveが表示された。

Tableに作成したwaveが表示された。

続いて,wave1をx軸,wave2とwave3をy軸にとってグラフ化してみる。
そのコマンドが,
Display wave2, wave3 vs wave1
となる。
GUIからグラフ作成も当然できる。その場合,WindowメニューのNew Graphを選択する。

waveをグラフ化

waveをグラフ化

作成したグラフが表示される。

グラフ描画

グラフ描画

グラフの見栄えを変更する方法を追記する。
どういう設定にするかは個人的な好みの問題であるが,いつも同じ形状でグラフ化されたほうが便利だ。
今回はGUIでの設定を記す。
グラフをアクティブにした状態で(グラフをクリックして),Graphメニューの中からModify Axisを選択する。

グラフの見栄えを変更

グラフの見栄えを変更

Axisタブの中からMirror Axisという選択項目でONにする。これにより,反対側の軸も表示されるようになる。

Mirror axisをON

Mirror axisをON

続いて,Ticks and Gridsタブの中からLocationという選択項目でinsideを選択する。これにより,目盛線が内側に表示される。

目盛線を内側に

目盛線を内側に

以上の,変更はleft軸(y軸)に関してのものなので,同じ操作をbottom軸(x軸)に関しても行う。

left軸も同様に変更する。

left軸も同様に変更する

続いて,Graphメニューの中から,Modify graphを選択する。

Modify graph

Modify graph

Width modeAspectを選択し,1.2と入力する。

Aspect 1.2とする。

Aspect 1.2とする。

以上の変更を,次にグラフ作成するときにも反映させるために,Graphメニューの中から,Capture Graph Preferencesを選択する。

グラフの見栄え設定を保存する。

グラフの見栄え設定を保存する

今回変更したのは,2点であり,それに対応する以下の項目をチェックする。

保存したい項目をチェック

保存したい項目をチェック

逆に,グラフ設定を初期値のまま使用したい場合には,Miscメニューの中からPreferences Offを選択してからグラフ化する。

グラフの見栄え設定について初期値を用いる。

グラフの見栄え設定について初期値を用いる。

Igorで足し算を

コメントをどうぞ


Igor Proというグラフ作成およびデータ解析ソフトがある。
研究者の間では手頃な値段のソフトとして重宝されている。
開発元はHurinks社であり,Demo版で1ヶ月フルに使え,その後もセーブ等ができないといった制約があるがフリーで使うことが出来るソフトである。

このソフトはグラフ作成もさることながら,強力なプログラミング機能が備わっている。
勉強がてら少し触ってみた。
例題として,またまた足し算を表示するプログラムを書いてみた。

Igorを起動して,エクスペリメントプロシージャウィンドウにコードを入力する。

Igorの画面

プロシージャ画面にコード入力新規プロシージャ作成プロシージャにコード記入作成した関数を実行関数実行の結果

Variable a, b, c
というのは変数の宣言。
C言語で用いたintdoubleというのはIgorが自動で判断する(指定しようと思ったらできるようだ)。

以下のコードを一行ずつ入力する。

a = 800
b = 29
c = a + b
Print c

コードを一行ずつ入力

 

C言語とほぼ同じで,イコール=は「代入する」という意味。
Print はC言語でいうところのprintfと同じである。

このように,インタラクティブにできるのがC言語にはない特徴。

一行一行入力するのは面倒だし,ある機能を持った関数を作成したい場合がほとんど。そのためには,新規でプロシージャを作成し,そこにプログラムを入力する。

新規プロシージャ作成
新規プロシージャ作成

Functionというのが関数の定義の宣言であり,Endまでが関数の中身。今回はtest()という名前の関数にした。
()内には引数を入力するが,今回は引数なし。

プロシージャにコード記入
プロシージャにコード記入

Compileというボタンを押すとコンパイルされる。エラーがあればメッセージが表示される。
エクスペリメントプロシージャウィンドウに作成した関数の名前を入力し,実行する。

作成した関数を実行
作成した関数を実行

実行結果が下の行に現れる。

関数実行の結果

関数実行の結果

C言語で足し算を

コメントをどうぞ


a = 800,b = 29 として,c = a + bとして,c の値を表示させるプログラムを作ります.

それでは,いきなりですが,プログラム例から.

足し算のプログラム例

C言語ではプログラム内で用いる定数をあらかじめ記しておく必要があります.(定数の宣言)
int a;
int b;
int c;
がそれにあたります.

まとめて,
int a, b, c;
としてもOKです.

intというのは“整数”という意味です.
このため,
int a;
というのは,“ a という定数を以下で用いますが,この a は整数です.”という意味です.

“整数”だけでなく,少数も含んだ定数を用いたい場合には,
double a;
というように,“ int ”ではなく“ double ”を用います.

実際に足し算を実行している行は,
c = a + b;
というところです.

これは,
“定数 c に,a + b を代入する”という意味です.

C言語での“=(イコール)”は,“代入する”という意味なので注意してください.

最後に,
printf(“%dです.\n”, c);
という部分で答えを表示しています.
printf(” “);
というのは,“ ” ” ”で囲まれた部分を表示させる呪文ですが,
ここに定数の値を表示させることもできます.
“ %d ”という部分がそれにあたります.
“ %d ”というのは,“整数の値”という意味で,何の整数かを
“, c”というところで示しています.

複数個の定数を表示させることもできます.

printf(“%d + %d = %d です.\n”, a, b, c);

と書き換えてみてください.

Older Entries