Main Content

Save and Load Process for Objects

Save and Load Objects

Use save and load to store and reload objects:

save filename object
load filename object

What Information Is Saved?

Saving objects in MAT-files saves:

  • The full name of the object class, including any package qualifiers

  • Values of dynamic properties

  • All property default values defined by the class at the time the first object of the class is saved to the MAT-file.

  • The names and values of all properties, with the following exceptions:

    • Properties are not saved if their current values are the same as the default values specified in the class definition.

    • Properties are not saved if their Transient, Constant, or Dependent attributes set to true.

For a description of property attributes, see Specify Property Attributes

To save graphics objects, see savefig.

Note

Do not use the pack command with objects that define events and listeners. The pack command causes the destruction of any listeners defined for the objects in the workspace. For information on restoring listeners when saving objects, see Restore Listeners.

How Is the Property Data Loaded?

When loading objects from MAT-files, the load function restores the object.

  • load creates a new object.

  • If the class ConstructOnLoad attribute is set to true, load calls the class constructor with no arguments. Otherwise, load does not call the class constructor.

  • load assigns the saved property values to the object properties. These assigned values are subjected to any property validation defined by the class. Then any property set methods defined by the class are called, (except in the case of Dependent, Constant, or Transient properties, which are not saved or loaded).

  • load assigns the default values saved in the MAT-file to properties whose values were not saved because the properties were set to the default values when saved. These assignments result in calls to property set methods defined by the class.

  • If a property of an object being loaded contains an object, then load creates a new object of the same class and assigns it to the property. If the object contained in the property is a handle object, then the property contains a new handle object of the same class.

MATLAB® calls property set methods to ensure that property values are still valid in cases where the class definition has changed.

For information, see Property Set Methods and Validate Property Values.

Errors During Load

If a new version of a class removes, renames, or changes the validation for a property, load can generate an error when attempting to set the altered or deleted property.

When an error occurs while an object is being loaded from a file, MATLAB does one of the following:

  • If the class defines a loadobj method, MATLAB returns the saved values to the loadobj method in a struct.

  • If the class does not define a loadobj method, MATLAB silently ignores the errors. The load function reconstitutes the object with property values that do not produce an error.

In the struct passed to the loadobj method, the field names correspond to the property names. The field values are the saved values for the corresponding properties.

If the saved object derives from multiple superclasses that have private properties with same name, the struct contains only the property value of the most direct superclass.

For information on how to implement saveobj and loadobj methods, see Modify the Save and Load Process.

Changes to Property Validation

If a class definition changes property validation such that loaded property values are no longer valid, MATLAB substitutes the currently defined default value for that property. The class can define a loadobj method or converter methods to provide compatibility among class versions.

For information on property validation, see Validate Property Values

See Also

Related Topics