【问题标题】:converting .mat files to XML -- need to add java class?将 .mat 文件转换为 XML - 需要添加 java 类?
【发布时间】:2011-01-24 15:31:25
【问题描述】:

我想将一些 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 的合理替代方案......谢谢~

【问题讨论】:

  • 你对classpath.txt做了修改吗? 'com' 错误似乎是您的 MATLAB 安装的问题。使用不同的 MATLAB 版本,但在同一平台上,我无法重现您的错误。
  • @zellus -- 不,我没有做任何修改...应该吗?

标签: java xml matlab


【解决方案1】:

由于较新的 mat 文件只是行/列翻转的 HDF5 文件,您可以编写新的 matlab 将其放入 HDF5。

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

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

差不多

你也可以探索hdf5write函数

【讨论】:

  • 啊,这是一个简单的解决方案...谢谢。但是在 R 中将文件作为 hdf5 文件读取时出错——可能没有那么简单?
  • 嗯。尝试使用“-v6”选项保存它。我认为 ML gzips mat 文件中的所有 mlmatrices 没有该选项。反正也看hdf5write
  • '-v6' 选项也不起作用,但 'hdf5write' 似乎可以解决问题...非常感谢。
  • save -v7.3 filename 也应该这样做。
猜你喜欢
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-12
  • 1970-01-01
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
相关资源
最近更新 更多