Loadwaveの使い方、wave名を指定して自動で読み込む

今回はLoadwaveコマンドを用いてwaveを読み込んだ際に、wave名を任意に指定して自動で読み込む方法についてまとめていきます。一見簡単そうに見えるのですが、エラーなく自動で実行するにはLoadwaveのフラグをある程度理解してやる必要があります。今回使用するフラグは「/W」もしくは「/B=columnInfoStr」です。

例えば、xyのデータがそれぞれ、カンマ区切りで縦に列挙された、下記のようなデータを読み込むことを考えます。xyデータはそれぞれ、"test1"と"test2"という名前です。

test1,test2
1,10
2,20
3,30

このときうまく機能するコマンドは下記のようになります。

Loadwave/A/G/O/W(ファイル内のwave名を使用)
Loadwave/A/G/O/B="C=1,N=test1; C=2,N=test2;"(任意のwave名を指定)

Wフラグは、GフラグやJフラグと同時に用いて、ファイル内でwave名に相当する文字列を探します。一方で、ファイル内のwave名とは無関係にwave名を指定したい場合はBフラグを使用します。Bフラグは上記のような記載方法で、読み込みたいデータ列、データタイプの指定(数値、文字列、日付など)、wave名の指定、数値タイプの指定が可能です。とりあえず数値データを読み込みたい場合にはデータ列と名前だけ指定しましょう。仮にwave名がないデータ列であっても、指定した名前のwaveとして読み込むことができます。

またAフラグでwave名の入力ダイアログをスキップできます。ですが、Aフラグは同じ名前のwaveが読み込まれたとき、自動で新しい名前を作成してしまうため、Oフラグもつけて上書きできるようにします。これで仮にtest1, test2というwaveがすでに存在していても、新たに読み込んだデータがtest1, test2という名前で上書きされます。更に、数値データを読み込むのでGフラグもつけて、General text formatで読み込みましょう。上記の例ではJフラグでも問題ありませんが、ヘッダーつきデータを読み込む場合などはJフラグではうまく文字列をスキップしてくれません。そのため数値データの読み込みの場合はGフラグ推奨です。

ここまで読んで、WフラグやBフラグを使わなくても、Aフラグを付けて連番で読み込んだwave(wave0, wave1)をrenameしてやればいいのでは?と思う人いると思います。ですが、Renameコマンドには上書きのフラグがないため、同じ名前のwaveが存在していたときにはエラーとなります。「duplicate/O wave0 test1」などとすればうまくいきますが、オリジナルのwaveであるwave0, wave1が生成されるため、これを消去する手間が生じます。全てのwaveを毎回消去することでエラー回避もできますが、その場合は他のwaveもすべて消えてしまうため、場合によっては不便です。また、何かの手違いでwave0やwave1が存在しなかった場合などはエラーの原因となります。このように、WフラグやBフラグを使わずに対処しようとすると、何かと面倒が生じます。

ところで、A, G, Oのフラグを抜かしてしまうとどのような状況が生まれるか、以下にまとめておきます。

Aがない場合:wave名確認のダイアログが出る(そのため、データ読み込みのたびに操作が必要になります。)

Gがない場合:can't handle this type of fileとなり、データ読み込みができない。上記のデータであれば、Jでも代用できる。

Oがない場合:2回目以降同じ操作を行った際に、同名のwaveを上書きできず、wave名確認のダイアログが出る

Igorでデータの読み込みがある程度自動化できるようになると、データ処理がとても捗ります。そのためにはまず、Loadwaveコマンドの理解が必要ですので、次回以降ももう少しLoadwaveコマンドについてまとめていきます。ではでは。

いいなと思ったら応援しよう!