オブジェクトの既定の保存と読み込みのプロセス
MATLAB® は、オブジェクトをシリアル化 (保存) および逆シリアル化する (読み込む) ときに、既定の一連の手順に従います。このトピックでは、カスタマイズされたシリアル化を実装していないクラスに対して MATLAB が使用する既定の手順について説明します。シリアル化のカスタマイズの詳細については、シリアル化プロセスをカスタマイズする状況を参照してください。
保存と読み込みの関数
オブジェクトをシリアル化および逆シリアル化するには、save および load を使用します。以下に基本的な構文を示します。
save("filename","variablename")
load("filename","variablename")保存される情報
MAT ファイル内のオブジェクトをシリアル化すると、以下が保存されます。
名前空間の修飾子を含む、オブジェクト クラスの完全名
動的プロパティの値
クラスの最初のオブジェクトが MAT ファイルに保存されるときにクラスによって定義される、すべてのプロパティの既定値
以下を除くすべてのプロパティの名前と値:
プロパティの現在の値が、クラス定義で指定されている既定値に等しい場合、そのプロパティは保存されない。
プロパティが過渡的、定数、または依存として定義されている場合、そのプロパティは保存されない。これらのプロパティの属性の説明については、プロパティの属性を参照してください。
プロパティ データ読み込みの仕組み
MAT ファイルからオブジェクトを逆シリアル化するとき、load 関数は以下の手順を使用してオブジェクトを復元します。
loadにより新しいオブジェクトが作成されます。クラスの
ConstructOnLoad属性がtrueに設定されている場合、loadは引数なしでクラス コンストラクターを呼び出します。それ以外の場合、loadはクラス コンストラクターを呼び出しません。loadは、保存されたプロパティ値をオブジェクトに代入します (既定では保存されない依存プロパティ、定数プロパティ、または過渡的プロパティの場合を除きます)。クラスでいずれかのプロパティに対して set メソッドが定義されている場合、MATLAB はそのメソッドを呼び出します。プロパティ値は、クラスの現在の定義で定義されているプロパティ検証を満たしている必要があります。詳細については、プロパティの get メソッドおよび set メソッドとプロパティ値の検証を参照してください。loadは、プロパティが既定値に設定されていたために値が保存されなかったプロパティに、MAT ファイルに保存された既定値を代入します。これらの代入により、クラスで定義されているプロパティの set メソッドが呼び出されます。読み込まれるオブジェクトのプロパティにオブジェクトが含まれる場合、
loadは同じクラスの新規オブジェクトを作成して、そのプロパティに割り当てます。オブジェクトのシリアル化後に、オブジェクトの 1 つ以上のプロパティが名前変更されたり、クラス定義から削除されたりした場合、
load関数は、該当する変更されたプロパティを除いてオブジェクトを再構成します。1 つ以上のプロパティの検証が変更され、保存された値が有効でなくなった場合、MATLAB はそのプロパティに現在定義されている既定値を代わりに使用します。