使用保存出错无法写入文件
Posted
技术标签:
【中文标题】使用保存出错无法写入文件【英文标题】:error using save can't write file 【发布时间】:2014-03-05 08:28:25 【问题描述】:我在 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/帕特里克
编辑
我尝试保存的变量是一个包含大量字段的结构。我试图保存一个大小为 800 mb 的 3 维矩阵,它没有问题。
【问题讨论】:
遗憾的是,这也不起作用,matlab 甚至无法识别该选项。但是,使用选项-v7
保存变量 a = 1
也很有效。
这个怎么样:save file.mat a -v7 ?这行得通吗?
很遗憾,没有。但是'save(fullfile('filepath','filename'),'var','-v7');
和save file.mat a -v7
都创建了一个文件,但是该文件在第 2 行已损坏,我仍然收到错误消息。
你的matlab版本是多少?
我的版本是MATLAB R2013a
【参考方案1】:
这与您的问题不完全匹配,但我在尝试保存为 -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.
如果没有要测试的特定变量,但看到错误消息匹配,我建议删除部分数据结构,直到它保存以隔离导致它失败的变量。
【讨论】:
情况并非如此。这么多年过去了,我只记得很模糊。我真的不记得我是如何解决它的,但我想我设法以某种方式更改了版本。尽管如此,当我遇到这个问题时,相同的数据可能会起作用,也可能会出错。我相信格式 v6 存在一些已知问题。以上是关于使用保存出错无法写入文件的主要内容,如果未能解决你的问题,请参考以下文章
文件上传 WCF WEB API(预览版 6)出错:无法向缓冲区写入超过配置的最大缓冲区大小的字节数:65536
“无法识别的类型'员工'。忽略。C:/ .....”从.xml读取输入并将输出写入.xls文件+ perl时出错