オブジェクトの保存と読み込みのプロセス
オブジェクトの保存と読み込み
save
および load
を使用してオブジェクトの保存と再読み込みを行います。
save filename object load filename object
保存される情報
MAT ファイルにオブジェクトを保存するときに、以下が保存されます。
パッケージの修飾子を含む、オブジェクト クラスの完全な名前
動的プロパティの値
クラスの最初のオブジェクトが MAT ファイルに保存されるときにクラスによって定義される、すべてのプロパティの既定値
以下を除くすべてのプロパティの名前と値:
プロパティの現在の値が、クラス定義で指定されている既定値に等しい場合、そのプロパティは保存されない。
プロパティの
Transient
、Constant
、またはDependent
属性がtrue
に設定されている場合、そのプロパティは保存されない。
プロパティの属性についての説明は、プロパティの属性を参照してください。
グラフィックス オブジェクトの保存については、savefig
を参照してください。
プロパティ データ読み込みの仕組み
MAT ファイルからオブジェクトを読み込むとき、関数 load
はオブジェクトを復元します。
load
により新しいオブジェクトが作成されます。クラスの
ConstructOnLoad
属性がtrue
に設定されている場合、load
は引数なしでクラス コンストラクターを呼び出します。それ以外の場合、load
はクラス コンストラクターを呼び出しません。load
は保存されているプロパティ値をオブジェクトのプロパティに代入します。これらの代入値は、クラスで定義されるプロパティ検証の対象です。次に、クラスで定義されたプロパティの set メソッドが呼び出されます (Dependent
、Constant
、Transient
の各プロパティの場合は保存も読み込みも行われないため除きます)。load
は MAT ファイルに保存された既定値を、保存時に既定値に設定されたため値が保存されなかったプロパティに代入します。これらの代入により、クラスで定義されているプロパティの set メソッドが呼び出されます。読み込まれるオブジェクトのプロパティにオブジェクトが含まれる場合、
load
は同じクラスの新規オブジェクトを作成して、そのプロパティに割り当てます。プロパティに含まれるオブジェクトがハンドル オブジェクトである場合、そのプロパティは同じクラスの新規ハンドル オブジェクトを含みます。
MATLAB® はプロパティの set メソッドを呼び出して、クラス定義が変更された場合でもプロパティの値がそのまま確実に有効であるようにします。
詳細については、プロパティの get メソッドおよび set メソッドとプロパティ値の検証を参照してください。
読み込み中のエラー
新しいバージョンのクラスがプロパティの削除や名前変更、検証の変更を行った場合、load
が変更または削除されたプロパティの設定を試みるとエラーが発生することがあります。
ファイルからオブジェクトを読み込むときにエラーが発生した場合、MATLAB は以下のいずれかを行います。
loadobj
メソッドに渡された struct
では、フィールド名はプロパティ名に対応しています。フィールドの値は、対応するプロパティの保存された値です。
保存されたオブジェクトが、同じ名前のプライベート プロパティをもつ複数のスーパークラスから派生している場合、struct
にはすぐ上のスーパークラスのプロパティ値のみが含まれます。
saveobj
および loadobj
メソッドの実装方法の詳細については、保存と読み込みのプロセスの変更を参照してください。
プロパティ検証の変更
クラス定義がプロパティ検証を変更したために読み込まれたプロパティ値が無効になってしまった場合、MATLAB はそのプロパティに現在定義されている既定値を代わりに使用します。クラスは loadobj
メソッドまたはコンバーター メソッドを定義して、クラスのバージョン間に互換性をもたせることができます。
プロパティ検証の詳細については、プロパティ値の検証を参照してください。