主要内容

对象的保存和加载过程

保存和加载对象

使用保存负载存储和重新加载对象:

保存文件名对象负载文件名对象

保存哪些信息?

保存对象在MAT-files保存:

  • 对象类的全名,包括任何包限定符

  • 动态属性值

  • 当类的第一个对象被保存到mat文件时,类定义的所有属性默认值。

  • 所有属性的名称和值,但有以下例外:

    • 如果属性的当前值与类定义中指定的默认值相同,则不保存属性。

    • 属性将不保存瞬态常数,或依赖属性设置为真正的

有关属性属性的描述,请参见指定属性的属性

要保存图形对象,请参见savefig

请注意

请勿使用命令带有定义事件和监听器的对象。的命令导致销毁工作区中为对象定义的任何侦听器。有关在保存对象时恢复监听器的信息,请参见恢复的听众

如何加载属性数据?

当从mat -file加载对象时,负载函数恢复对象。

  • 负载创建一个新对象。

  • 如果类ConstructOnLoad属性设置为真正的负载不带参数调用类构造函数。否则,负载不调用类构造函数。

  • 负载将保存的属性值分配给对象属性。这些被赋值服从类定义的任何属性验证。然后调用类定义的任何属性集方法(除了依赖常数,或瞬态属性,未保存或加载)。

  • 负载将保存在mat文件中的默认值分配给未保存其值的属性,因为属性在保存时被设置为默认值。这些赋值导致调用类定义的属性集方法。

  • 如果加载的对象的属性包含对象,则负载创建相同类的新对象并将其赋值给属性。如果属性中包含的对象是句柄对象,则该属性包含同一类的新句柄对象。

MATLAB®调用属性集方法,以确保在类定义发生更改的情况下,属性值仍然有效。

信息,请参阅属性集的方法验证属性值

在加载错误

如果类的新版本删除、重命名或更改属性的验证,负载当试图设置已更改或已删除属性时,可能生成错误。

当从文件中加载对象时发生错误时,MATLAB会执行以下操作之一:

  • 如果类定义了loadobj方法,MATLAB将保存的值返回给loadobj方法在一个结构体

  • 如果类没有定义loadobj方法,MATLAB会忽略这些误差。的负载函数使用不产生错误的属性值重新构造对象。

结构体传递到loadobj方法时,字段名对应于属性名。字段值是对应属性的保存值。

如果保存的对象派生自多个具有相同名称的私有属性的超类,则结构体只包含最直接的超类的属性值。

有关如何实现的信息saveobjloadobj方法,请参阅修改保存和加载过程

属性验证的更改

如果一个类定义更改了属性验证,导致加载的属性值不再有效,MATLAB将用当前定义的默认值替换该属性。类可以定义loadobj方法或转换器方法以提供类版本之间的兼容性。

有关属性验证的信息,请参见验证属性值

另请参阅

相关的话题