2011-01-24 80 views
1

我想将一些MAT文件转换为XML(每个.mat文件包含一个层次结构),以便我可以从其他软件(如R,Python)访问数据。这些MAT文件是在Matlab 6.5中生成的,因此它们不在HDF5数据格式规范中。有这表明从MAT到XML的简单转换用户提供的XML工具箱(2003年)是可能的:将.mat文件转换为XML - 需要添加java类吗?

http://www.mathworks.com/matlabcentral/fileexchange/4278

但我似乎遇到与xml_format功能的错误:

??? NaN's cannot be converted to logicals. 

我试图转换的数据结构嵌套在许多数据类型(数组等)上,所以我可能必须编写自己的导出函数。我用Matlab版本7.10.0.499(R2010a版本)64位(maci64),所以我应该有可用的xmlwritexmlread功能对我说:

http://www.mathworks.com/help/techdoc/import_export/f5-86078.html#bsmnj5u

然而,当我试图以他们为榜样,

docNode = com.mathworks.xml.XMLUtils.createDocument('root_element') 

我得到一个错误:

??? Undefined variable "com" or class 

如果我尝试看看Java类加载它,我得到

[M,X,J] = inmem; 
J = 

    'MException' 

尽管在我的$matlabroot/toolbox/local/classpath.txt中似乎有很多加载的Java类。

我是否需要安装Java模块或添加其他路径或其他内容才能使其工作?或者你有没有建议从MAT转到另一种允许任意嵌套结构(其中一些包含图像阵列表示)的通用数据交换格式?我没有看到MAT到HDF5转换的方式,这似乎也可能是从MAT转换到XML的合理替代方式...谢谢〜

+0

你有没有上进行修改* classpath.txt *? 'com'错误似乎是你的MATLAB安装的问题。使用不同的MATLAB版本,但在同一个平台上,我无法重现您的错误。 – zellus 2011-01-24 07:03:37

+0

@zellus - 不,我没有做任何修改......我应该吗? – hatmatrix 2011-01-24 23:25:29

回答

2

由于较新的mat文件只是HDF5文件的行/山羊翻转你可以写新的matlabs到HDF5。

到老垫文件转换为较新的HDF5格式在MATLAB刚刚打开它们并重新保存

s=open('AFile.mat') 
save('AFile.mat','-struct','s') 

左右

您还可以探索hdf5write功能