我在matlab中遇到了这个非常奇怪的错误。当我尝试运行命令
时save(fullfile('filepath','filename'),'var','-v7');
我收到错误消息
error using save can't write file
但是当我尝试
时save(fullfile('filepath','filename'),'var','-v7.3');
一切正常。该变量在工作区占用一些空间,165MB,但我猜这个大小不应该是一个问题。有谁知道为什么它不能保存在v7
?
对于想要确认变量大小的人,我将添加whos
信息,
Name Size Bytes Class Attributes
myName 1x1 173081921 struct
BR / Patrik
修改
我尝试保存的变量是一个包含大量字段的结构。我试图保存一个大小为800 mb的3维矩阵,它没有遇到任何问题。
答案 0 :(得分:0)
这与您的问题不完全匹配,但在尝试保存为-v6格式时收到了相同的错误消息。当不支持变量类型或大小时,Matlab应该发出错误:
help save
...
If any data items require features that the specified version does not support, MATLAB does not save those items and issues a warning. You cannot specify a version later than your version of MATLAB software.
Matlab的错误检查似乎并不完美,因为某些情况(依赖于Matlab版本和特定的变量类型)只是失败了所有错误消息:
Error using save
Can't write file filename.mat.
例如,在Linux中使用Matlab r2015b中的'-v6'选项保存带有某些unicode字符的字符串会产生错误,但Windows中的Matlab r2016a却没有。这是我的Matlab r2015b会话的输出:
>> A=char(double(65533))
A =
?
>> save('filename.mat','-v6','A')
Error using save
Can't write file filename.mat.
如果没有要测试的特定变量,但看到错误消息匹配,我建议删除部分数据结构,直到它将保存以隔离导致其失败的变量。