保存 Matlab 对象实例会导致无限循环

Posted

技术标签:

【中文标题】保存 Matlab 对象实例会导致无限循环【英文标题】:Saving Matlab object instance results in an infinite loop 【发布时间】:2018-07-24 15:44:25 【问题描述】:

设置

我有created一个名为“Participant”的Matlab 句柄类,用于读取和操作某些研究数据。我创建了这个对象的多个实例并将它们保存到硬盘上没有问题. 我还检查了我有问题的实例,以确保它在 Matlab 中可以正常工作。该实例似乎没有任何错误。

问题

但是,在某些情况下,我没有明确的理由,Matlab 卡在写入磁盘的无限循环中。这在查看 .mat 字段输出的修改日期时很明显,该日期每分钟都在变化,而且我的 Matlab 实例速度大大减慢。

创建参与者的代码是

myparticipant = participant([basedir ,p_folderp_num]);

尝试过的方法

我已通过右键单击导致上述问题的工作区保存到磁盘。

使用保存功能,我得到:

 save('test.mat', 'myparticipant')

Error using save
Error closing file test.mat.
The file may be corrupt. 

当然之后就不会加载了。

任何见解都将不胜感激,因为我不确定如何开始处理这个问题。

【问题讨论】:

您确定它是无限的,而不仅仅是保存大量数据吗?您正在处理的数据量有多大?当前有问题的数据集与过去创建的多个实例有何不同? 嗨,它确实是无限的,但您对数据大小的评论非常有帮助。我能够解决这个问题!本质上,问题在于因为我使用了句柄类,所以工作内存中显示的数据大小远小于数据的实际大小。因为我的数据大于2gb,我不得不使用Matlab的“-V7.3”关键字保存到文件! Matlab 产生的错误是非信息性的,我假设是因为句柄类。再次感谢:) 死循环怎么报错? 请不要编辑问题或标题以添加不必要的信息。该解决方案不属于标题。 @excaza 正如我在问题描述中提到的“这在查看 .mat 字段输出的修改日期时很明显,该日期每分钟都在变化,而且我的 Matlab 实例速度大大减慢。” 【参考方案1】:

感谢 excaza 的评论,我能够发现这个问题。正如我在评论回复中解释的那样,问题在于因为我使用了句柄类,所以我在工作内存中显示的数据的大小要小得多。但是,我的数据大小实际上大于 2gb。在这些情况下,您必须使用 Matlab 的“-V7.3”关键字来保存到文件!添加该标志为我做了。

【讨论】:

以上是关于保存 Matlab 对象实例会导致无限循环的主要内容,如果未能解决你的问题,请参考以下文章

Matlab GUI中的无限循环导致关闭GUI时Matlab冻结?

从 nib 实例化 UIView 导致无限循环问题

python-进程中的无限循环导致kivy实例产生forverer

为啥这会导致无限循环

无限循环的线程是不是会导致 CPU 过多

为啥这会导致无限请求循环?