MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   为什么我的MATLAB(R2008a)对象的类在保存/加载周期中发生变化? (https://www.labfans.com/bbs/showthread.php?t=22626)

poster 2019-12-10 16:49

为什么我的MATLAB(R2008a)对象的类在保存/加载周期中发生变化?
 
[B]更新:[/B]这是一个已知的[URL="http://www.mathworks.com/support/bugreports/details.html?rp=461224"]错误[/URL] -链接需要登录Mathworks才能访问。

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

[/INDENT]简要地说,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 [B]原始问题[/B]

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

[B]示例MATLAB(r2008a)会话[/B]

>> 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之后,变量[I]bb[/I]神秘地从superClass更改为propClass

[B]类:超类[/B]

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

classdef superClass


所有时间均为北京时间。现在的时间是 01:11

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