如何在Windows中加载一个在UNIX系统下保存的Matlab文件(.mat)

3

我想在Windows环境下打开一个.mat文件,但是失败了。该文件是在Unix环境下创建的。请注意,该文件首先被放在.tar文件中,然后通过二进制方法进行ftp传输。该文件可以在Unix中打开,我认为它没有被损坏。


2
你比较了md5哈希值吗?Matlab文件是跨平台的。 - ypnos
错误:ASCII文件~/myfile.mat第1行的列数必须与前面的行相同。 - user1984826
这是一个非常大的.mat文件吗?如果可能的话,制作一个较小的示例(如果您能够),可以发布并查看是否会出现相同的错误。 - RussH
更新: 我做了一个实验。我在Unix中创建了一个.mat文件,并将其传输到Windows,它没有出现任何问题。然后我制作了一个该文件的.tar归档文件并将其传输到Windows,但是失败了。我认为WinZip解压缩.tar文件的方式是问题所在。有人知道如何解决吗?已解决:在WinZip选项>配置>杂项中,取消选中“TAR文件智能CR / LF转换”感谢大家的帮助。 - user1984826
请将您的最后一条评论作为答案发布。 - Shai
1个回答

3
*.mat文件格式是跨平台的,操作系统不重要。
*.mat文件有许多变种,旧版本不能总是读取新版本保存的格式。您可以使用save命令中可用的标志将其保存为旧版本。随着Matlab功能集需要更灵活的文件格式以及其他技术的进步,这些格式已经更新,特别是在最近版本中使用了HDF5。
最后,save命令支持ASCII格式选项。根据您收到的错误消息的评论,我猜这可能是您当前的问题。
解决您当前的问题:
首先,请检查文件是否为ASCII文件。最简单的方法是在记事本、WordPad甚至Matlab编辑器中打开它。如果文件是文本,则成为文件解析问题,并且适当使用fscanf应该解决问题。
如果文件实际上是二进制*.mat文件,则可能存在Matlab版本不兼容性。您可以返回源Unix环境并保存为旧版本(例如save .... -v7)或更新读取计算机的Matlab版本。

很好的回答。然而,UNIX版的Matlab比Windows上的版本要旧。 - user1984826
更新: 我做了一个实验。我在Unix中创建了一个.mat文件,并将其传输到Windows,它没有出现任何问题。然后我制作了一个该文件的.tar归档文件并将其传输到Windows,但是失败了。我认为WinZip解压缩.tar文件的方式是问题所在。有人知道如何解决吗?已解决:在WinZip选项>配置>杂项中,取消选中“TAR文件智能CR / LF转换”感谢大家的帮助。 - user1984826

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接