1

matrix of doubleサイズがです1024x1024。ファイルに書きたい。これがこれに対する解決策です。受け入れられた回答は、予想どおり、質問の2番目の回答よりも50〜60%時間効率が高くなります(両方の方法でファイルに書き込むという私の簡単なテストによると)。

csvファイルに書き込む別の解決策があります(質問で受け入れられた回答)、はるかに遅くなります(3〜4倍遅くなります)

ファイルに書き込んでいる間、行列の各要素の浮動小数点数は 16 で、出力は次のようになります。

-1.6819883882999420e-001 -3.5269531607627869e-001 2.4137189984321594e-001 -3.9325976371765137e-001 -2.2069962322711945e-001 -5.9525445103645325e-002

ファイルに書き込むと、ファイルサイズは最初の方法(最初のリンク、受け入れられた回答)で24 MB、3番目の方法(2番目のリンク、受け入れられた回答)で37 MBになり、どちらも受け入れられません。

行列の精度をすばやく設定する必要があり、出力は のようになり-1.6819e-01 -3.5269e-01ます。どんな助けでも大歓迎です。

私がやっていることは、1024x1024 の画像を読み取り、それを処理してから、出力 Mat(これは double) をファイルに書き込むことです。何千もの画像があり、画像はすべて 1 MB 未満であり、各画像の実行時間は保存せずに 1 秒未満であると考えてください。

編集: Matlab で同じ行列を保存すると、6.75 MB になります

4

2 に答える 2

0

これには HDF5 の使用を検討してください。HDF5 は標準のファイル形式 (C および C++ 実装) であり、多くの種類のデータを格納できますが、特に数値行列に適しています。浮動小数点 (32 ビット) 値を使用して圧縮された HDF5 データセットとしてデータを保存すると、Matlab の結果よりもはるかに小さくなるに違いありません。

http://www.hdfgroup.org/HDF5/Tutor/compress.html

于 2013-10-07T12:02:58.497 に答える