Igorでバイナリファルを読み込む。

ファイル名はabc.binでファイルの中身はdouble型が50個格納されている。double型は8バイトなので合計400バイトとなる。

メニューで
Data/Load Waves/Load General Binary File
をクリック。

Load General Binary Data

型:Double float
Byte order:Low byte first (intel系の場合)
File:読み込むファイルを指定(今回はabc.bin)

実行後(Do it)
AppendToTable コマンドでテーブルに追加。以下のように読み込めた。

Output of Load Binary Data

補足1:

データが行列のように1次元でない場合,その列毎にwaveを分けたかったりする。
その場合には,以下のようにプロシージャを作成すれば良い。
GBLoadWaveコマンドを,読み込むオフセットを設定し,for文で繰り返し実行している。

Function test()
String file_name=”C:test:abc.bin”
Variable i, offset_i
offset_i = 0
for (i=0;i<5;i+=1)
GBLoadWave /B /T={4,4} /N=$(“wave”+num2str(i)) /S=(offset_i) /W=1 /U=10 file_name
offset_i += 50
endfor
end

補足2:

今回は,C言語でバイナリファイルを作成した。ファイルの中身は,double型で10行5列に乱数を代入している。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#pragma warning(disable:4996)

int main(void)
{
int i,j;
double abc[10][5];

FILE *file;

for(i=0;i<10;i++){
for(j=0;j<5;j++){
abc[i][j]=rand();
printf(“%lf\n”,abc[i][j]);
}
}

file = fopen(“abc.bin”,”wb”);
fwrite(abc,sizeof(abc),1,file);
fclose(file);

return 0;
}