R.matlab / readMat:readTag中的错误(this)

时间:2012-07-03 20:03:14

标签: r

我正在尝试使用R.matlab将一个matlab文件读入R中,但遇到了这个错误:

require(R.matlab)
r <- readMat("file.mat", verbose=T)

Trying to read MAT v5 file stream...
Error in readTag(this) : Unknown data type. Not in range [1,19]: 18569
In addition: Warning message:
In readMat5Header(this, firstFourBytes = firstFourBytes) :
  Unknown MAT version tag: 512. Will assume version 5.

如何解决此问题或是否有其他方法来加载matlab文件?我可以使用hdf5load,但听说这可能会弄乱数据。谢谢!

2 个答案:

答案 0 :(得分:1)

这在回复上有点晚,但我最近遇到了同样的问题。对我来说,问题是我默认使用&#39; -v7.3&#39;来保存matlab文件。选项。经过广泛搜索后,R.matlab源文档(http://cran.r-project.org/web/packages/R.matlab/R.matlab.pdf)表明以下内容:

  

阅读压缩的MAT文件

     

从MATLAB v7开始,默认使用压缩的MAT版本5文件   [3,4]。此功能支持阅读   文件,如果运行R v2.10.0或更新版本。对于旧版本的R,   使用Rcompression包。要安装该软件包,请参阅   http://www.omegahat.org/ cranRepository.html上的说明。作为一个   最后,在MATLAB中使用save -V6来编写MAT文件   兼容MATLAB v6,即编写非压缩MAT   版本5文件。

     

关于使用'-v7.3'保存在MATLAB中的MAT文件

     

此功能没有   支持保存在MATLAB中的MAT文件保存(&#39; foo.mat&#39;,   &#39; -v7.3&#39)。这些MAT文件具有完全不同的文件格式   [5,6]与那些保存的比较,比如&#39; -v7&#39;。&#34;

添加&#39; -v7&#39;我的保存命令末尾的选项修复了此问题。 即:保存(&#39;文件名&#39;,&#39;变量&#39;,&#39; -v7&#39;)

答案 1 :(得分:0)

我有一个非常类似的问题,直到我将该函数指向一个存在的实际.mat文件。在那之前我一直在指定两个同名的文件,但一个是.mat而另一个是.txt,所以它可能一直试图打开另一个。
我意识到这可能不能直接解决你的问题(我在错误信息中看到的唯一区别是没有第一行“正在尝试......”以及此后的具体数字以及另外几个类似警告的奇数存在),但它可能指向一些简单的文件名问题作为问题。 我在64位vista上使用最新的matlab,在32位xp上使用最新的R。