2016-12-17 9 views
0

.matファイルにネストされたセルとして大量のデータが格納されています。私の最大の問題は、現在、これらのファイルにアクセスするための読み込み時間ですが、根本的な問題は私がデータを格納するための非効率的な方法を思いついたと思っています。MATLABでネストされたセルとして大量のデータが格納されているメモリの問題

完全なファイルは、セルARAYで構成されています:85のnのバージョンとp

.Variableの〜100バージョンまでがあるh

.{n,p}の52のバージョンが存在する

Hemi{1,h}ここには〜2500個の値を持つ10個の変数があります

このフルファイルは、私は別名、部品にそれを保存:

Hemi1.mat=Hemi{1,1} Hemi2.mat=Hemi{1,2}

を等

このアプリケーションの次のステップは、各ファイルをロードし、適切な解決策であることの一部を決定することである(私は必要Hemi{1,h}.{n,p}.Var1,Hemi{1,h}.{n,p}.Var2Hemi{1,h}.{n,p}.Var3)、ソリューションを保存してからファイルを閉じて次の変数に移動する必要があります。

  1. これらのファイルを高速に読み込む方法はありますか?
  2. 問題は私のデータセットより少なく、私はそれをどのように保存するのですか?よりよい選択肢がありますか?

答えて

0

これはかなりのデータです。私はあなたが見ることができるいくつかの提案があります。最初は、データ型をCategorical Objectsのように変更できるかどうかを確認することです。彼らはもっとメモリ効率が良い方法です。また、最終的なデータとして文字列を格納する場合、これはかなり重いストレージ賢明かもしれません。

次に、HDF5 file storageを調べることができます。私はそれが構造化されたデータを保存する良い方法だと聞いています。

最後に{n、p}配列をテーブル構造に変換しようとする可能性があります。私はこれが記憶にとってより良いのかどうかはわかりませんが、テーブルはうまく働いていて、あなたを助けるかもしれません。 (Matlabのバージョンによってはテーブルがないかもしれません:P)。

こちらがお役に立てば幸いです。

-kyle

+0

私はテーブルを持っていますが、私はそれらのスペースが少なくて済むとは確信していません。しかし、テーブル形式はeaxmpleのために 'datastore 'とより互換性がありますか?データはすべて倍精度の浮動小数点数です。私はそれらをすべて単精度にすることができると思いますか? – DYS

+1

慎重に '仮定'して、精度を失うことがないことを知っている場合にのみ、単精度で保存してください!また、データを圧縮せずにすばやく保存/読み込む方法については、こちらを参照してください。https://uk.mathworks.com/help/matlab/import_export/mat-file-versions.html#br_4ten つまり、ディスクを購入する余裕があれば圧縮せずに巨大なファイルを保存するスペース! – Wolfie

+0

Willのリンクから: "バージョン7.3のMATファイルは、データを圧縮されたチャンクに保存するHDF5ベースのフォーマットを使用します。バージョン7から変数の一部をロードするのに必要な時間。3 MATファイルは、データが1つ以上のチャンクにどのように格納されるかによって異なります。ロードするデータの一部を含む各チャンクは、データにアクセスするために完全に解凍されていなければなりません。データの再チャージは、ロード操作のパフォーマンスを向上させることができます。データを再解析するには、HDF5ディストリビューションの一部であるHDF5コマンドラインツールを使用してください。 – DYS

関連する問題