不使用Matlab头文件和库编写MAT文件

10

我有一些数据需要保存到MAT文件(无论是版本4、5还是其他任何版本),但是我希望在不使用Matlab库的情况下完成此操作,因为这段代码可能不会在安装了Matlab的机器上运行。我的程序使用Java和C++,因此任何现有的使用这些语言实现的库都可以帮助我 ...

我做了一些研究,但未在Java / C++中找到任何相关的内容。但是,我发现Python中的scipy使用或可以实现这一点。我考虑在Java或C++上实现,但似乎不符合我的时间表。

因此问题是:是否有任何Java或C/C++库允许在不使用Matlab库的情况下保存MAT文件?

非常感谢


1
我猜你已经找到了Mathwork公司的“MAT文件格式”文档,并且在尽可能利用SO帮助你找到已经编写好的库之前,不想自己编写代码? - High Performance Mark
2个回答

12

1
我之前也遇到过类似的问题,最终编写了一组函数作为Matlab API写.mat文件的替代品。没有什么花哨的东西,但它可以完成基本操作(包括结构和嵌套)。它已经上传到Github上:http://github.com/EyNuel/matOut/wiki - Emanuel Ey

5

自版本7以来,MAT文件基于HDF5。我记得它们使用了一些有趣的约定,但您可能能够逆向工程出所需内容。Java和C ++都有HDF5写入库。

类似于这些,Matlab可以读/写几种标准格式,包括HDF5。将数据写入“标准”HDF5可能是最容易的方法,并在Matlab中将其读入所需的数据结构中。


+1 我记得在某个地方读到过这个信息,但每次去查找时都找不到证实。你提出了另一种可能性:OP可以读/写 HDF5 文件,而 MATLAB 肯定能够处理这些文件,无论其自身的 MAT 文件实现是什么样子的。 - High Performance Mark
HDF5是行主序。Mat是列主序。目前关于hdf5write的“帮助”解释了为什么这可能是一个坏事。 - KitsuneYMG
@kts:是的,但Matlab写入HDF5文件的顺序可以切换。虽然我在实践中从未发现这是个问题,但有时我必须在Matlab或Fortran程序中转置矩阵。 - High Performance Mark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接