2013-07-08 11 views
6

処理したい大きな.matファイルがありますが、単一の負荷に収まるには大きすぎます。私は、重要なパラメータにアクセスするたびに、それを部分的にロードすると考えました。実際には2つの質問があります:私のマシンのメモリには大きすぎる.matファイルの一部をどうやってロードできますか?

  1. マットファイルの変数名にアクセスするにはどうしたらいいですか?
  2. どのようにして1つだけをワークスペースにロードできますか?

ありがとう!

答えて

7

あなたが使用して変数のリストを見ることができます:

load('name.mat', vars(1).name) 
6

と同様にロード:

vars = whos('-file','name.mat'); 

をして、ちょうどあなたがしたい変数をロードするには、ことで、リストの最初のものを言います@natanによって提案されたように.matファイルの個々の変数を使用することができます。最近のバージョンのMATLABでは、matfileオブジェクトを使用して個々の変数の一部のみを読み込むことができます。

したがって、たとえば、あなたが言うことができます。

myFile = matfile('path\to\the\mat\file'); 
loadedData = myfile.myVarName(100:200, 500:600); 

を、あなたは、ファイルmyFileから変数myVarNameの一部だけをでロードされます。


編集:あなたはあなたがビットをロードしようとする前に、ファイルが含まれている変数の名前とサイズを決定することができるように

matfileオブジェクトは、メソッドsizewhowhosを持ってい

+0

私はこれを見ていない、それは本当に知って良いです。 –

+4

'matfile'は部分読み込み用のMATファイルv7.3(HDF5ベース)のみをサポートしていることに注意してください。それ以外の場合、変数全体の読み込みに戻ります。 – Amro

+0

+1お知りになりたい... – bla