原本保存为XXX的变量YYY无法实例化为对象,会读入为uint32
Variable YYY originally saved as a XXX cannot be instantiated as an object and will be read in as a uint32
我犯了一个错误,用我找不到的 class 定义记录了一堆重要数据。方法不重要,我只要数据;结构转换就可以了。
有什么方法可以恢复吗?
谷歌搜索没有帮助。
解决方案是创建一个新的 class 来重载 loadobj
method. See here,以获取有关 classes 的加载过程的更多信息。
我通过创建 class:
复制了你的问题
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
然后我创建了这个 class 的对象并将其保存到文件 "x.mat":
x = myclass('a',56,[1,2,3]);
save x
接下来,我删除了 myclass
文件并做了 clear classes
。这让我遇到了你的情况。
然后我创建了一个新的 myclass
class 来重载 loadobj
方法:
classdef myclass
properties
data
end
methods (Static)
function obj = loadobj(s)
obj = myclass;
obj.data = s;
end
end
end
注意它是如何不知道任何原始属性的。这没关系。如果从 MAT 文件加载对象时缺少任何原始属性,将调用 loadobj
,s
是包含原始对象所有属性的 struct
。
使用这个新的 class 定义,load x
创建了 class myclass
的对象 x
,其中 x.data
是一个包含"x.mat".
中保存的对象的属性
我犯了一个错误,用我找不到的 class 定义记录了一堆重要数据。方法不重要,我只要数据;结构转换就可以了。
有什么方法可以恢复吗?
谷歌搜索没有帮助。
解决方案是创建一个新的 class 来重载 loadobj
method. See here,以获取有关 classes 的加载过程的更多信息。
我通过创建 class:
复制了你的问题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
然后我创建了这个 class 的对象并将其保存到文件 "x.mat":
x = myclass('a',56,[1,2,3]);
save x
接下来,我删除了 myclass
文件并做了 clear classes
。这让我遇到了你的情况。
然后我创建了一个新的 myclass
class 来重载 loadobj
方法:
classdef myclass
properties
data
end
methods (Static)
function obj = loadobj(s)
obj = myclass;
obj.data = s;
end
end
end
注意它是如何不知道任何原始属性的。这没关系。如果从 MAT 文件加载对象时缺少任何原始属性,将调用 loadobj
,s
是包含原始对象所有属性的 struct
。
使用这个新的 class 定义,load x
创建了 class myclass
的对象 x
,其中 x.data
是一个包含"x.mat".