如何在matlab中将句柄对象层次结构保存到磁盘
Posted
技术标签:
【中文标题】如何在matlab中将句柄对象层次结构保存到磁盘【英文标题】:How to save handle object hierarchy to disk in matlab 【发布时间】:2017-03-23 12:40:22 【问题描述】:我有一些大的句柄对象层次结构,例如
classdef A < handle
b;
c;
end
classdef B < handle
d;
e;
end
classdef C < handle
f;
g;
end
a = A;
其中a,b,c,d,e,f
都是它们各自类的实例。最终,会有基本的数据类型(向量或标量,比如双精度数)。
我需要保存a
来保存有关a,b,c,d,e,f
的所有信息,以便以后恢复。
运行时间现在对我来说不是问题。
开发时间是个问题。
如何轻松创建*** A 类型对象的保存到磁盘? (深拷贝,到磁盘)。
我希望它自动发生(内置),可能有点像 java 的序列化,而我不必为我在类结构中所做的每次更改更改一些保存方法。
【问题讨论】:
Matlab 的save
有什么问题?
【参考方案1】:
当使用 MATLAB 使用内置的 save
保存对象时,它会自动保存“深拷贝”,因为它会保存对象的所有属性,如果这些属性中的任何一个也是 对象或对象数组,它们本身将被序列化。然后可以使用内置的load
函数轻松地再次加载对象。值得注意的是,为了正确加载自定义类的对象,调用load
时,类定义必须在路径上。
save('output.mat', 'a')
fromdisk = load('output.mat');
如果要自定义类的保存或加载功能,可以分别重载saveobj
和loadobj
方法。
【讨论】:
对不起,我忘了从句柄继承,现在修复它。 save 是否也适用于继承句柄的类(意味着所有成员都是通过引用)? @Gulzar 是的,如果您有两个对同一个实例的引用,它们也会作为对同一个句柄对象的引用重新加载。以上是关于如何在matlab中将句柄对象层次结构保存到磁盘的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MATLAB 中将 .mat 文件内容保存在内存中?