5

膨大な量のデータ(> 800Mb)があり、Matlabにロードするのに時間がかかります。これは主に、データが20kB未満の小さなファイルに分割されているためです。それらはすべて、私が読み取ってMatlabにロードできる独自の形式であり、非常に時間がかかるだけです。

私は、データを読み込んで、ある種のバイナリファイルに書き出すことを考えています。これにより、後続の読み取りが速くなります(多くの場合があるため、高速化が必要です)。

だから、私の質問は、それらをディスクに書き込んで、できるだけ早く読み直すのに最適な形式は何でしょうか?

fwriteを使用して書き込むか、matlabから変数を保存するかを選択できると思います。私はfwriteオプションを好むと思うので、必要に応じて、別のパッケージ/言語からそれらを読み取ることができます...

4

3 に答える 3

4

.matファイルの基礎となる形式としてMATLABの最近のバージョンで使用されているHDF5データ形式を調べてください。この関数を使用して独自のHDF5ファイルを手動で作成できます。hdf5writeこのファイルには、HDFバインディングを持つ任意の言語からアクセスできます(ほとんどの一般的な言語は、HDF5ライブラリを呼び出すことができるCコードを統合する方法を提供します)。

データが数値(および同じデータ型)の場合、プレーンバイナリ(fwrite)のパフォーマンスに勝るものはありません。

于 2011-01-27T09:43:49.190 に答える
2

バイナリマットファイルが最速です。使用するだけ

save myfile.mat <var_a> <var_b> ...
于 2011-01-27T09:30:22.070 に答える
0

'-v6'オプションを使用して.matファイルを次のように保存すると、読み込みが驚くほど高速になりました。

save(matlabTrainingFile, 'Xtrain', 'ytrain', '-v6'); 

これが私のテストで使用したマトリックスのサイズです...

Attr Name                   Size                     Bytes  Class
==== ====                   ====                     =====  ===== 
  g  Xtest               1430x4000                45760000  double
  g  Xtrain              3411x4000               109152000  double
  g  Xval                1370x4000                43840000  double
  g  ytest               1430x1                      11440  double
  g  ytrain              3411x1                      27288  double
  g  yval                1370x1                      10960  double

...そして私たちが達成したパフォーマンスの改善:

変更前:

time to load the training data: 78 SECONDS!!! 
time to load validation data:   32
time to load the test data:     35

変更後:

time to load the training data: 0 SECONDS!!!
time to load validation data:   0
time to load the test data:     0

どうやらこれがうまく機能する理由は、古いバージョン6のバージョンが新しいバージョンよりも少ない圧縮を使用したためです。したがって、ファイルサイズは大きくなりますが、読み込みははるかに速くなります。

于 2015-09-10T08:17:05.593 に答える