如何在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');

如果要自定义类的保存或加载功能,可以分别重载saveobjloadobj 方法。

【讨论】:

对不起,我忘了从句柄继承,现在修复它。 save 是否也适用于继承句柄的类(意味着所有成员都是通过引用)? @Gulzar 是的,如果您有两个对同一个实例的引用,它们也会作为对同一个句柄对象的引用重新加载。

以上是关于如何在matlab中将句柄对象层次结构保存到磁盘的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MATLAB 中将 .mat 文件内容保存在内存中?

在 C++ 中将类实例添加到对象层次结构时出现问题

在 MATLAB 中将数据保存到 .mat 文件

如何在颤动中将 ImageCache 保存到磁盘?

如何在张量流中将 TextVectorization 保存到磁盘?

如何在 Python 中将对象数组保存到文件中