Main Content

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

オブジェクトの保存と読み込みのプロセス

オブジェクトの保存と読み込み

save および load を使用してオブジェクトの保存と再読み込みを行います。

save filename object
load filename object

保存される情報

MAT ファイルにオブジェクトを保存するときに、以下が保存されます。

  • パッケージの修飾子を含む、オブジェクト クラスの完全な名前

  • 動的プロパティの値

  • クラスの最初のオブジェクトが MAT ファイルに保存されるときにクラスによって定義される、すべてのプロパティの既定値

  • 以下を除くすべてのプロパティの名前と値:

    • プロパティの現在の値が、クラス定義で指定されている既定値に等しい場合、そのプロパティは保存されない。

    • プロパティの TransientConstant、または Dependent 属性が true に設定されている場合、そのプロパティは保存されない。

プロパティの属性の説明は、プロパティ属性の指定を参照してください。

グラフィックス オブジェクトの保存については、savefig を参照してください。

メモ

イベントとリスナーを定義するオブジェクトに pack コマンドを使用しないでください。pack コマンドを実行すると、ワークスペース内のオブジェクトに対して定義されたすべてのリスナーが破棄されます。オブジェクトを保存するときにリスナーを復元する方法の詳細については、リスナーの復元を参照してください。

プロパティ データ読み込みの仕組み

MAT ファイルからオブジェクトを読み込むとき、関数 load はオブジェクトを復元します。

  • load により新しいオブジェクトが作成されます。

  • クラスの ConstructOnLoad 属性が true に設定されている場合、load は引数なしでクラス コンストラクターを呼び出します。それ以外の場合、load はクラス コンストラクターを呼び出しません。

  • load は保存されているプロパティ値をオブジェクトのプロパティに代入します。これらの代入により、クラスで定義されているプロパティの set メソッドが呼び出されます (ただし、DependentConstantTransient の各プロパティの場合は保存も読み込みも行われないため除きます)。

  • load は MAT ファイルに保存された既定値を、保存時に既定値に設定されたため値が保存されなかったプロパティに代入します。これらの代入により、クラスで定義されているプロパティの set メソッドが呼び出されます。

MATLAB® はプロパティの set メソッドを呼び出して、クラス定義が変更された場合でもプロパティの値がそのまま確実に有効であるようにします。

プロパティの set メソッドについての詳細は、プロパティ の set メソッドを参照してください。

読み込み中のエラー

新しいバージョンのクラスがプロパティの削除や名前変更、検証の変更を行った場合、load が変更または削除されたプロパティの設定を試みるとエラーが発生することがあります。

ファイルからオブジェクトを読み込むときにエラーが発生した場合、MATLAB は以下のいずれかを行います。

  • クラスで loadobj メソッドが定義されている場合、MATLAB は struct を用いて、保存された値を loadobj メソッドに返します。

  • クラスで loadobj メソッドが定義されていない場合、MATLAB はエラーをそのまま無視します。関数 load は、エラーを発生させないプロパティ値によってオブジェクトを再構成します。

loadobj メソッドに渡された struct では、フィールド名はプロパティ名に対応しています。フィールドの値は、対応するプロパティの保存された値です。

保存されたオブジェクトが、同じ名前のプライベート プロパティをもつ複数のスーパークラスから派生している場合、struct にはすぐ上のスーパークラスのプロパティ値のみが含まれます。

saveobj および loadobj メソッドの実装方法の詳細については、保存と読み込みのプロセスの変更を参照してください。

プロパティ検証の変更

クラス定義がプロパティ検証を変更したために読み込まれたプロパティ値が無効になってしまった場合、MATLAB はそのプロパティに現在定義されている既定値を代わりに使用します。クラスは loadobj メソッドまたはコンバーター メソッドを定義して、クラスのバージョン間に互換性をもたせることができます。

プロパティ検証の詳細については、プロパティ値の検証を参照してください。

関連するトピック