ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

変数部の MAT ファイルへの保存

関数 matfile を使用した保存

次の例では、変数部分を変更し、MAT ファイルに保存する方法を示します。この例のコードを実行するため、2 つの変数を使用して Version 7.3 の MAT ファイルを作成します。

A = rand(5);
B = ones(4,8);
save example.mat A B -v7.3;
clear A B

example.mat の変数 B の最初の行の値を更新します。

example = matfile('example.mat','Writable',true)
example.B(1,:) = 2 * example.B(1,:);

関数 matfile により、MAT ファイルに対応する matlab.io.MatFile オブジェクトが作成されます。

matlab.io.MatFile

Properties:
      Properties.Source: C:\Documents\MATLAB\example.mat
    Properties.Writable: true                                                 
                      A: [5x5 double]                                         
                      B: [4x8 double] 

Version 7.3 の MAT ファイルに関連付けられたオブジェクトにインデックス操作を行う場合、指定された変数部分のみが MATLAB® によって読み込まれ、保存されます。このような部分的な読み込みや保存では、常に変数全体を処理する loadsave コマンドよりもメモリが少しで済みます。

非常に大きいファイルの場合、一度に読み込む/書き込むデータ量をできるだけ多くすることが、ベスト プラクティスです。そうでない場合はファイルへのアクセスが繰り返され、コードのパフォーマンスに悪影響を与えます。たとえば、ファイルに行と列が多く含まれているため、1 行を読み込むだけで使えるメモリのほとんどの領域が必要になるとします。この場合、一度に 1 つの要素を更新する代わりに、各行を更新します。

example = matfile('example.mat','Writable',true);

[nrowsB,ncolsB] = size(example,'B');
for row = 1:nrowsB
  example.B(row,:) = row * example.B(row,:);
end

メモリの問題がない場合は、次のように変数の内容全体を一度に更新できます。

example = matfile('example.mat','Writable',true);
example.B = 10 * example.B;

また、-append オプションを使用して関数 save を呼び出し、変数を更新することもできます。-append オプションは関数 save に、指定した変数 B のみを置き換え、ファイル内の他の変数はそのままにしておくように指示します。

load('example.mat','B');
B(1,:) = 2 * B(1,:);
save('example.mat','-append','B');

この方法では必ず変数全体を読み込んで保存する必要があります。

変数をファイルに追加するには、次のいずれかの方法を使用します。たとえば、以下のコードについて考えます。

example = matfile('example.mat','Writable',true);
example.C = magic(8);

このコードでは次のコードと同じ保存操作を行います。

C = magic(8);
save('example.mat','-append','C');
clear C

MAT ファイルの部分読み込み要件としての Version 7.3 形式

Version 7 以前の MAT ファイルに関連付けられた matlab.io.MatFile オブジェクトを使用して読み込みまたは保存を行うと、変数全体が一時的にメモリに読み込まれます。

関数 matfile では、Version 7.3 形式のファイルが作成されます。たとえば、以下のコードについて考えます。

newfile = matfile('newfile.mat');

このコードでは部分的な読み込みと保存をサポートする MAT ファイルが作成されます。

ただし、既定の設定では、関数 save は Version 7 の MAT ファイルを作成します。そのため、次のように -v7.3 オプションを使用して関数 save を呼び出し、既存の MAT ファイルを Version 7.3 形式に変換します。

load('durer.mat');
save('mycopy_durer.mat','-v7.3');

新規ファイルを Version 7.3 形式で保存するように設定を変更するには、[ホーム] タブの [環境] セクションにアクセスし、 [設定] をクリックします。[MATLAB][一般][MAT ファイル] を選択します。

この情報は役に立ちましたか?