2010-04-23 50 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