2009-06-03 9 views
3

私は、MATLABのプログラムで生成された "乱数"をいくつかテストしなければなりません。 Diehardは32ビットのバイナリファイル(単精度)しか受け付けませんが、データをMATLABに保存すると、倍精度のバイナリファイル(2 * 64 = 128ビットのバイナリファイル)に保存されます。 64ビットシステムで動作するMATLABで32ビットのバイナリファイルを作成するにはどうすればよいですか?matlabの32ビットバイナリファイルにデータを保存する方法は?

答えて

6

バイナリファイルに特定の形式でデータを読み書きする場合は、関数FREAD/FWRITEを使用する必要があります。例えば、32ビットが浮かぶように、このファイルに100個のランダムな値を書き込みます:herehere

A = rand(1,100); 
fid = fopen('temp.dat','wb'); 
fwrite(fid,A,'float32'); 
fclose(fid); 

MATLABでファイルIOに関する詳細情報については、あなたはまた、これらの他のSO関連記事をチェックアウトすることができます。 gnoviceのソリューションにさらに

3

、あなたはそうのように、「シングル」などの乱数を生成したいことがあります。

rand(1, 100, 'single') 
+1

これは非常に大きな行列を扱っている場合、それは取るになるので、覚えておくことが良いですRANDが使用するデフォルトの倍精度よりも少ない領域になります。ただし、使用するFWRITEの精度を指定する必要があります。これが指定されていない場合、FWRITEはデフォルトで 'uint8'の精度になります(何らかの理由で、渡す変数の精度を選択するだけではありません)。 – gnovice

関連する問題