現在、大量(数十GB)のデータファイルを、memmapファイルを使用してMatlabにインポートしています。私が読んでいるファイルは、それに続くデータを記述するいくつかのフィールドで構成されています。MATLABの大規模データを効率的に再編成または参照する
single_element = m.data(745).mydata(26);
は、私がこれを考えるようにしたい:
m.format = { 'uint8' [1 1024] 'metadata'; ...
'uint8' [1 500000] 'mydata' };
m.repeat = 10000;
だから、私はデータの一つのサンプルは次のように対処される構造Mで終わる:ここに私のフォーマットがどのように見えるかの例です。この例から、10,000×500,000のマトリックスとしてのデータ。このように個々のアイテムを索引付けすることはやや面倒ですが、難しくありません。私の本当の問題は、たとえば私がアクセスしたいときに発生します。すべての行の4番目の列。 MATLABは、次のことを許可しません。
single_column = m.data(:).mydata(4);
私は(私は途中でメタデータを気にしない)をゆっくりと実際のマトリックスの中に、この全体のことをピースにループを書くことができますが、データは、この大規模なため、それは難しいですどんなに遅くてもそれがいかに遅くなるかを過度に強調する...必要なメモリを2倍にするということは言うまでもありません。何か案は?
データを読む前にデータのサイズを知っていますか? – MBZ
はい、私はデータのフォーマットとサイズに関するすべてを知っています。 – Eric