Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 16:49   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 为什么我的MATLAB(R2008a)对象的类在保存/加载周期中发生变化?

更新:这是一个已知的错误 -链接需要登录Mathworks才能访问。

错误报告摘要
如果使用7.6版(R2008a)保存到MAT文件的MATLAB用户定义类的实例的属性值之一是另一个MATLAB类的实例,则可能无法正确加载。

简要地说,Mathworks报告说以前保存的顶级自定义对象可能未正确加载(如下所述),并且在SAVE步骤上发生了错误。因此,数据在MAT文件中已损坏。

根据我的经验,这似乎是断断续续的。在一个数据分析应用程序中,我写出了75个MAT文件,其中37个保存了此损坏:(

注意用户定义的对象。我在保存时添加了以下测试,以确保数据未损坏

save('MAT_file_name.mat'); tmp=load('MAT_file_name.mat'); if ~isa(tmp.bb,'superClass') msgbox({'THE FILE WAS NOT SAVED PROPERLY', ... ' ', ... [' MAT_file_name.mat',]}) end 原始问题

在这里,我正在使用MATLAB 2008a。此细微的错误已在MATLAB-2009a中修复。无论如何,通过定义我的两个类的方式,保存/加载循环导致将一个类(superClass)的变量作为第二个类(propClass)的变量加载。

示例MATLAB(r2008a)会话

>> bb=superClass; >> whos Name Size Bytes Class Attributes bb 1x1 60 superClass >> save >> clear >> clear classes >> load >> whos Name Size Bytes Class Attributes bb 1x1 60 propClass 加载matlab.mat之后,变量bb神秘地从superClass更改为propClass

类:超类

这个类需要包含一个propClass类型的数组,这是朴素的定义

classdef superClass
poster 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 05:13


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.