matfile
MAT ファイルをメモリに読み込まずに、そのファイル内の変数にアクセスして変更
説明
MAT ファイル オブジェクトを使用して、メモリに読み込まずに MAT ファイル内の変数にアクセスして変更します。一部の変数の読み込みと保存ができます。MAT ファイル オブジェクトを使用した変数の部分的な読み込みおよび保存では、必要なメモリが load コマンドおよび save コマンドより少なくなります。
作成
説明
は、matObj = matfile(filename)filename で指定された MAT ファイルに関連付けられた matlab.io.MatFile オブジェクトを作成します。
この MAT ファイル オブジェクトを使用すると、変数をメモリに読み込むことなく、MAT ファイル内で直接変数にアクセスして変更できます。
は、ファイルへの書き込みアクセスを有効または無効にします。matObj = matfile(filename,"Writable",isWritable)isWritable は true または false として指定します。
入力引数
プロパティ
オブジェクト関数
size | MAT ファイル内の変数の配列次元を取得
メモ: |
who | MAT ファイル内の変数のリストを取得
|
whos | MAT ファイル内の変数と、そのサイズおよび型のリストを取得
|
例
制限
インデックス付けにより MAT ファイル内の変数の一部にアクセスする場合の動作は次のとおりです。
線形インデックス付けはサポートされていません。この場合、すべての次元のインデックスを指定しなければなりません。
実数配列のインデックス付けされた部分に複素数値を割り当てることはサポートされていません。
MAT ファイル内のスパース配列に対する MAT ファイル オブジェクトの動作は次のとおりです。
インデックス付けによるスパース配列のサブセットの読み取りをサポートします。
インデックス付けによるスパース配列のサブセットへの書き込み (値の代入) はサポートされていません。
MAT ファイル オブジェクトは次の対象へのインデックス付けをサポートしません。
表の変数
cell 配列のセル
string 配列
datetime配列duration配列構造体配列のフィールド
ユーザー定義クラス
MAT ファイル オブジェクトは、
mの出力を使用した関数ハンドルの評価をサポートしません。たとえば、MAT ファイルに関数ハンドルmyfuncが含まれている場合、構文m.myfunc()によって、関数ハンドルのインデックス付けが試行されますが、関数は呼び出されません。ハンドル オブジェクトを保存するとき、MATLAB はオブジェクトのコピー (ハンドルのコピーではなく) を保存します。したがって、オブジェクトが保存されたワークスペース内のハンドル経由でオブジェクトを変更する場合、保存されたハンドル オブジェクトは変更されません。
ヒント
効率的な部分読み込みと保存では、Version 7.3 の MAT ファイルが必要です。Version 7.3 MAT ファイルを作成するには、
'-v7.3'オプションを使用して関数saveを呼び出します。たとえば、durer.matという名前の既存の MAT ファイルを Version 7.3 に変換するには、次のように呼び出します。load('durer.mat'); save('mycopy_durer.mat','-v7.3');
インデックスの一部として
endキーワードを使用すると、MATLAB は変数全体をメモリに読み込みます。非常に大きい変数の場合、この読み込み操作によってOutofMemoryエラーが発生します。endを使用せずに、sizeメソッドを使用して変数の範囲を指定します。sizeMyVar = size(matObj,'myVar')