我想将一些MAT文件转换为XML(每个.mat文件都包含分层结构),以便可以从其他软件(例如R,Python)访问数据。这些MAT文件是在Matlab 6.5中生成的,因此不在HDF5数据格式规范中。有一个用户提供的XML工具箱(来自2003年),建议从MAT到XML的简单转换是可能的:

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的合理替代方案...谢谢〜

最佳答案

由于较新的Mat文件只是具有翻转行/列的HDF5文件,因此您只需编写新的Matlab即可将其导入HDF5。

要将旧的mat文件转换为较新的HDF5格式,只需在matlab中打开它们并重新保存

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


或者

您还可以探索hdf5write函数

关于java - 将.mat文件转换为XML —是否需要添加Java类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4779143/

10-12 04:12