【问题标题】:Copy MATLAB object of a handle class复制句柄类的 MATLAB 对象
【发布时间】:2017-08-16 18:46:50
【问题描述】:

我在 MATLAB 中实现了一个句柄类,并尝试通过调用以下两个函数来复制该类的一个对象:

objByteArray = getByteStreamFromArray(obj);
newObj = getArrayFromByteStream(objByteArray);

但有时我会收到以下错误:

使用 getArrayFromByteStream 时出错 无法读取数据流,因为数据包含错误的版本或字节序键

还有其他方法可以复制句柄类的对象吗?

【问题讨论】:

  • 您为什么要尝试使用未记录的内部功能,该功能旨在将类保存到二进制文件中,只是为了复制变量? newcopyofobj = obj 有什么问题?
  • 对于句柄对象(与值类对象不同)newcopyofobj = obj 只是创建对旧 obj 的引用。我正在谈论的类是从句柄继承的。对不起,我不够清楚。 @SamRoberts

标签: matlab


【解决方案1】:

由于您使用的是句柄类,因此您可以从 matlab.mixin.Copyable 继承您的类,这将为您的类提供可自定义的 copy 方法。

默认情况下,copy 方法将实现类属性的浅拷贝(即,如果类属性本身是句柄类,则副本将引用原始属性),但您可以自定义复制操作以实现深拷贝(即对类属性也执行拷贝操作)。

matlab.mixin.Copyable 的文档。

【讨论】:

  • 谢谢@MarioKoddenbrock。如果答案对您有帮助,请单击答案左侧的勾号将其标记为已接受。这有助于其他人找到它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-20
  • 2012-09-26
相关资源
最近更新 更多