首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最初保存为XXX的变量YYY不能作为对象实例化,而将作为uint32读入

问最初保存为XXX的变量YYY不能作为对象实例化,而将作为uint32读入
EN

Stack Overflow用户
提问于 2019-09-13 19:38:01
回答 1查看 289关注 0票数 1

我犯了一个错误,用一个我再也找不到的类定义记录了一堆重要的数据。方法并不重要,我只需要数据;结构转换就可以了。

有什么办法能让我恢复过来吗?

用谷歌搜索一下也没什么用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-13 23:32:15

解决方案是创建一个重载loadobj方法的新类。有关类的加载过程的更多信息,请参见here。

我通过创建一个类来复制您的问题:

代码语言:javascript
复制
classdef myclass
   properties
      Prop1
      Prop2
      Prop3
   end
   methods
       function obj = myclass(a,b,c)
           obj.Prop1 = a;
           obj.Prop2 = b;
           obj.Prop3 = c;
       end
   end
end

然后,我创建了这个类的一个对象,并将其保存到文件“x.mat”中:

代码语言:javascript
复制
x = myclass('a',56,[1,2,3]);
save x

接下来,我删除了myclass文件并执行了clear classes。这让我处于你的境地。

然后我创建了一个重载loadobj方法的新myclass类:

代码语言:javascript
复制
classdef myclass
   properties
       data
   end
   methods (Static)
       function obj = loadobj(s)
           obj = myclass;
           obj.data = s;
       end
   end
end

注意它是如何不知道任何原始属性的。这并不重要。如果从MAT文件加载对象时缺少任何原始属性,将调用loadobj,其中s是一个包含原始对象的所有属性的struct。

使用这个新的类定义,load x创建了一个myclass类的对象x,其中x.data是一个结构,其中包含保存在"x.mat“中的对象的属性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57922957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档