对象的默认保存和加载过程
MATLAB® 在序列化(保存)和反序列化(加载)对象时遵循一组默认步骤。本主题描述 MATLAB 用于未实现自定义序列化的类的默认步骤。有关自定义序列化的详细信息,请参阅When to Customize the Serialization Process。
save 和 load 函数
使用 save
和 load
来序列化和反序列化对象。以下是基本语法。
save("filename","variablename") load("filename","variablename")
保存哪些信息?
序列化 MAT 文件存储中的对象:
对象类的全名,包括任何命名空间限定符。
动态属性的值
当类的第一个对象保存到 MAT 文件时该类定义的所有属性默认值。
所有属性的名称和值,但存在以下例外:
如果属性的当前值与类定义中指定的默认值相同,则不会保存属性。
如果属性定义为 transient、constant 或 dependent,则不会保存这些属性。有关这些属性特性的描述,请参阅属性特性。
如何加载属性数据?
从 MAT 文件中反序列化对象时,load
函数使用以下步骤还原对象:
load
创建一个新对象。如果类
ConstructOnLoad
属性设置为true
,则load
调用不带参量的类构造函数。否则,load
不会调用类构造函数。load
将保存的属性值分配给对象(除了 dependent、constant 或 transient 属性,这些属性默认情况下不保存)。如果该类为任何属性定义 set 方法,MATLAB 会调用它们。属性值必须满足由该类的当前定义所定义的任何属性验证。有关信息,请参阅属性 get 和 set 方法和验证属性值。load
将保存在 MAT 文件中的默认值赋给其值未保存的属性,因为这些属性设置为其默认值。这些赋值导致对类定义的属性 set 方法的调用。如果正在加载的对象的属性包含对象,
load
将创建一个相同类的新对象并将其赋给该属性。如果对象的一个或多个属性在对象序列化后已重命名或从类定义中被删除,则
load
函数将重新构造该对象,而不包含这些更改的属性。如果更改了一个或多个属性的验证,并且保存的值不再有效,则 MATLAB 会用当前定义的默认值代替该属性。