我想将一些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),因此我应该可以使用
xmlwrite
和xmlread
函数: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/