2010-04-23 58 views
10

我有一些数据,我想保存到MAT文件(版本4或5,或任何版本,对于这个问题)。问题:我想在不使用matlab库的情况下这样做,因为此代码不需要在具有matlab的机器中运行。我的程序使用Java和C++,所以任何现有的这些语言库实现这一点可以帮助我...写一个MAT文件,而不使用matlab头文件和库

我做了一些研究,但没有在Java/C++中找到任何东西。然而,我发现Python上的scipy通过mio4.pymio5.py实现了这一点。我想过在java或C++上实现它,但它似乎有点超出我的时间表。

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

非常感谢

+1

我认为你已经找到了Mathwork的文档“MAT文件格式”的副本,不希望推出自己的代码,直到你筋疲力尽的SO帮助你找到一个已经的可能性书面的图书馆? – 2010-04-23 16:29:05

回答

12

C:matio
的Java:jmatio
(我真的很想,所以我会告诉你要学会谷歌)

但实际上,它并不难写使用fwrite如果matfiles你不需要处理一些更复杂的东西(嵌套的结构,类,函数,稀疏矩阵等)。
见:http://www.mathworks.com/access/helpdesk/help/pdf_doc/matlab/matfile_format.pdf

+1

前段时间我有一个类似的问题,最后写了一套函数作为matlab API写入.matfiles的插入替换。没有什么奇特的,但它确实是基础(包括结构和嵌套)。它在github:http://github.com/EyNuel/matOut/wiki – 2011-11-25 11:46:37

5

从第7版开始的MAT文件基于HDF5。我记得他们使用了一些相当有趣的约定,但是你可能能够逆向工程你需要的东西。 Java和C++都有HDF5编写库。

沿着这些线条,Matlab可以读/写几种标准格式,包括HDF5。在“标准”HDF5中编写数据并将其读入Matlab中所需的数据结构中可能最为容易。

+0

+1我以为我会在某个地方读到,但是当我去看时永远找不到确认。您提出了另一种可能性,OP可以读/写HDF5文件,MATLAB可以确定地处理它自己实现的MAT文件。 – 2010-04-23 17:03:42

+0

@HPM极好的一点。我会提到的。 – 2010-04-23 17:04:22

+0

HDF5是行主要的。垫是专栏。目前hdf5write上的'help'解释了一些关于为什么这可能是一件坏事 – KitsuneYMG 2010-04-23 17:20:35