マクロによるデータのインポート ーIgorの使い方ー

本ブログではIgorというグラフソフトの使い方について解説しています。私もものすごく高度な使い方をしているわけではありませんが、単にグラフを作成するだけでなく、解析の自動化をするマクロの作成など、データの解析に利用しています。そのノウハウについてブログで紹介しようと思います。

今回はマクロによるデータの読み込み方法について説明します。

スポンサーリンク

loadwave関数

Igorへのデータの読み込みはloadwave関数を用いて行います。読み込むファイルを指定しなければファイルを選択するダイアローグが自動で立ち上がるので、マクロの中でファイル名を指定しないloadwave関数を使ってあげればデータを読み込むマクロになります。

Macro loadDATA()
loadwave/Q/G/A
EndMacro

上記のようなマクロを実行すればファイルを読み込むダイアローグが立ち上がり、選択したファイルを読み込みます。/Q/G/Aはオプションで、

  • /Gはgeneral textとして読み込む
  • /Qはprocedureウインドウに履歴を残さない
  • /Aは自動で名前を付けるオプションで、wave0, wave1など続き番号になる

一般的なデータであればひとまずgeneral text形式で読み込めば大丈夫です。複数の列が含まれたデータもwave0, wave1などの続き番号で自動で読み込んでくれるはずです。

このように、マクロでデータを読みこむだけならばとても簡単です。ただし、これでは手動でデータを読み込む手間と変わらないので、マクロならではの工夫がしたいですよね?以下でいくつか必要なTIPSを挙げておきます。

スポンサーリンク

自動で読み込むデータ名を設定する

Igorでデータを自動で読み込むとwave0, wave1, wave2などとwave+続き番号で読み込まれます。また、既にIgor内にwave0やwave1が存在する場合には次の読み込みはwave2から始まります。

このような設定では、既にIgorファイル内に存在するwave+番号という名前のデータと干渉し、後々の処理で面倒なことになりがちです。オプションで”wave”の部分の名前を変えることが可能です。

Macro load_Data()
loadwave/Q/G/A=hogehoge
EndMacro

上記のように/A=hogehogeのオプションを加えるとwave0, wave1, wave2という続き番号ではなく、hogehoge0, hogehoge1, hogehoge2などという続き番号になります。

さらに、/Aオプションではなく、/Nオプションにすることで既存のデータ名を上書きすることも可能です。

Macro load_Data()
loadwave/Q/G/N=hogehoge
EndMacro

上記のコードでは、既にhogehoge0, hogehoge1などの名前のデータが存在したとしても上書きされて読み込まれます。このオプションを使うことによって、このloadwaveで読み込まれるデータの名前が固定されるので、私はこちらのオプションを使っています。

読み込んだファイル名の取得

データ処理をする上では、読み込んだファイルの名前を使用したい場合も多いでしょう。また、たくさんのファイルを自動で読み込む際には、ファイルの名前を使って自動で名前を付けるのが現実的でしょう。

実は、Igorでは読み込んだファイルの名前は”S_filename“という文字列に自動で保存されています。ファイルを読み込むたびに”S_filename”の中身が書き換わる仕組みです。これを利用することで、読み込んだファイルのファイル名を簡単に取得することができます。

Macro load_Data()
loadwave/Q/G/N=hogehoge

duplicate hogehoge0 $S_filename

killwaves hogehoge0

EndMacro

上記のマクロでは、まずhogehoge0という名前のデータを読み込み、読み込んだファイルの名前(S_filename)をもつデータにコピーしています。duplicateはデータ(Wave)をコピーする関数で、$マークは”S_filename”という文字列の中身という意味です。$マークを付けないと “S_filename” は文字列として認識されるのでコピーできません。

このマクロは読み込んだファイルの中にデータが1列しかないという前提です。通常は時間とシグナルのように2つ以上の種類のデータが保存されているはずでしょう。その際にはファイル名+_1などのような名前を付ければいいでしょう。以下のようにします。

Macro load_Data()
loadwave/Q/G/N=hogehoge
String FN1=S_filename+"_1")
String FN2=S_filename+"_2")


duplicate hogehoge0 $FN1
duplicate hogehoge1 $FN2



killwaves hogehoge0, hogehoge1

EndMacro

データが2つある場合には自動で”hogehoge0″と”hogehoge1″という名前のデータが読み込まれます。今度はFN1とFN2という文字列を作ってやり、その中身をファイル名+_1と_2にしています。さらにデータ数が多ければ、この数字を増やせばいいですし、X軸、Y軸として使うデータとして分かっているのであれば、”_X”, “_Y”などを足してもいいでしょう。

文字列は数字のように足し合わせることができますが、上記のように具体的な文字列を足したい場合には” “で囲みます。

あとは先ほどと同じように読み込んだデータをコピーしてあげれば解決です。

最後に不必要になった “hogehoge0″と”hogehoge1” を削除しています。残しておくとバグの原因になるので、毎回削除しておいた方が無難だと私は思っています。

まとめ

今回はマクロでデータを読み込む方法と読み込んだデータの名前を読み込んだファイルの名前から付ける方法を説明しました。データの読み込みが解析処理の基本なので、解析の自動化のために非常に重要な項目です。

コメント

タイトルとURLをコピーしました