Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
更新:这是一个已知的错误 -链接需要登录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 |
![]() |
![]() |