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 は変数全体をメモリに読み込みます。非常に大きい変数の場合、この読み込み操作によってOut
of
Memory
エラーが発生します。end
を使用せずに、size
メソッドを使用して変数の範囲を指定します。sizeMyVar = size(matObj,'myVar')
バージョン履歴
R2011b で導入