MATLAB 帮助中心
自定义对象的保存过程
b = saveobj(a)
注意
推荐使用 matlab.mixin.CustomElementSerialization 类而不是 loadobj 和 saveobj,因为 mixin 能够更好地控制一个对象的序列化和反序列化方式,包括能够添加、删除和重命名属性。 (自 R2024b 起)
matlab.mixin.CustomElementSerialization
loadobj
saveobj
如果 a 的类定义 saveobj 方法,则 b = saveobj(a) 由 save 函数调用。save 将返回的值 b 写入 MAT 文件。
a
b
save
示例
全部折叠
ContactEntry 类定义三个属性。该类定义将这些属性值保存在一个结构体中的 saveobj 方法,以及从保存的结构体中重新创建对象的 loadobj 方法。
ContactEntry
classdef ContactEntry properties Name Email Cell end methods function s = saveobj(obj) s.Name = obj.Name; s.Email = obj.Email; s.Cell = obj.Cell; end end methods (Static) function obj = loadobj(s) if isstruct(s) newObj = ContactEntry; newObj.Name = s.Name; newObj.Email = s.Email; newObj.Cell = s.Cell; obj = newObj; else obj = s; end end end end
创建一个 ContactEntry 的实例并保存它。
a = ContactEntry; a.Name = "Sandy Trent"; a.Email = "strent@notacompany.com"; a.Cell = "617-555-1212"; save("C:\yourpath\ContactFile.mat","a");
修改 ContactEntry 以包含保留工作电话号码的新属性。
classdef ContactEntry properties Name Email Cell WorkPhone end properties (Transient,Hidden) SaveInOldFormat = false; end methods function s = saveobj(obj) s.Name = obj.Name; s.Email = obj.Email; s.Cell = obj.Cell; if ~obj.SaveInOldFormat s.WorkPhone = obj.WorkPhone; end end end methods (Static) function obj = loadobj(s) if isstruct(s) newObj = ContactEntry; newObj.Name = s.Name; newObj.Email = s.Email; newObj.Cell = s.Cell; if numel(fieldnames(s)) == 4 newObj.WorkPhone = s.WorkPhone; else newObj.WorkPhone = "unknown"; end obj = newObj; else obj = s; end end end end
loadobj 方法已修改,以检查序列化结构体中的第四个字段。如果有第四个字段,loadobj 会将 WorkPhone 属性设置为该值。否则,它将 WorkPhone 属性设置为 "unknown"。
WorkPhone
"unknown"
新的瞬态隐藏属性 SaveInOldFormat 使类用户能够指定是否以旧格式序列化该类的实例(不带 WorkPhone 属性值)。如果 SaveInOldFormat 是 false,则 saveobj 方法仅保存 WorkPhone 值。
SaveInOldFormat
false
从内存中清除现有实例 a,并在该类的新定义下加载 a。修订后的 loadobj 方法将保存的数据识别为来自该类的旧版本,并适当地设置 WorkPhone。
clear a load("C:\yourpath\ContactFile.mat","a") a
a = ContactEntry with properties: Name: "Sandy Trent" Email: "strent@notacompany.com" Cell: "617-555-1212" WorkPhone: "unknown"
要序列化的对象。
由 MATLAB® 传递给 save 函数的数据,可以是:
对象
存储在结构体中的属性名称和当前值
实现 saveobj 方法以使用标量对象或结构体。当您保存对象数组时,save 对数组的每个元素调用 saveobj。
在 R2006a 之前推出
save | load | loadobj
load
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
欧洲
亚太
联系您当地的办事处