我犯了一个错误,用一个我再也找不到的类定义记录了一堆重要的数据。方法并不重要,我只需要数据;结构转换就可以了。
有什么办法能让我恢复过来吗?
用谷歌搜索一下也没什么用。
发布于 2019-09-13 23:32:15
解决方案是创建一个重载loadobj方法的新类。有关类的加载过程的更多信息,请参见here。
我通过创建一个类来复制您的问题:
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”中:
x = myclass('a',56,[1,2,3]);
save x接下来,我删除了myclass文件并执行了clear classes。这让我处于你的境地。
然后我创建了一个重载loadobj方法的新myclass类:
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“中的对象的属性。
https://stackoverflow.com/questions/57922957
复制相似问题