2010-04-23 2 views
10

Ich habe einige Daten, die ich in eine MAT-Datei speichern möchte (Version 4 oder 5 oder irgendeine andere Version). Der Catch: Ich wollte dies ohne Matlab-Bibliotheken tun, da dieser Code nicht in einer Maschine mit Matlab laufen wird. Mein Programm verwendet Java und C++, also kann jede existierende Bibliothek in diesen Sprachen mir helfen ...Schreiben Sie eine MAT-Datei ohne Verwendung von Matlab-Headern und -Bibliotheken

Ich habe etwas recherchiert, aber habe nichts in Java/C++ gefunden. Allerdings habe ich festgestellt, dass scipy auf Python dies mit mio4.py oder mio5.py erreicht. Ich dachte darüber nach, dies auf Java oder C++ zu implementieren, aber es scheint ein wenig außerhalb meines Zeitplans zu liegen.

Die Frage ist also: Gibt es Bibliotheken in Java oder C/C++, die das Speichern von MAT-Dateien ohne Verwendung von Matlab-Bibliotheken erlauben?

Vielen Dank

+1

Ich nehme an, dass Sie eine Kopie von The Mathworks Dokument 'MAT-Dateiformat' gefunden haben und nicht Ihren eigenen Code rollen wollen, bis Sie die Möglichkeit von SO ausgeschöpft haben, einen bereits zu finden -geschriebene Bibliothek? –

Antwort

12

C: matio
Java: jmatio
(ich wirklich bin versucht, so werde ich, sagen Sie zu Google lernen)

Aber wirklich, es ist nicht so schwer matfiles zu schreiben mit fwrite wenn Sie müssen einige der komplexeren Dinge (verschachtelte Strukturen, Klassen, Funktionen, Sparse-Matrix usw.) nicht behandeln.

+1

Ich hatte vor einiger Zeit ein ähnliches Problem und schrieb eine Reihe von Funktionen als Drop-In-Ersatz für die Matlab-API zum Schreiben von .matfiles. Nichts Besonderes, aber es macht die Grundlagen (einschließlich Strukturen und Verschachtelung). Es ist auf Github: http://github.com/EyNuel/matOut/wiki –

5

MAT-Dateien ab Version 7 sind HDF5 basiert. Ich erinnere mich, dass sie einige ziemlich witzige Konventionen verwenden, aber Sie können möglicherweise das zurückentwickeln, was Sie brauchen. Es gibt sicherlich HDF5-Schreibbibliotheken für Java und C++.

In diesem Sinne kann Matlab mehrere Standardformate lesen und schreiben, einschließlich HDF5. Es kann am einfachsten sein, Ihre Daten in "Standard" HDF5 zu schreiben und sie in die gewünschte Datenstruktur innerhalb von Matlab einzulesen.

+0

+1 Ich dachte, ich würde das irgendwo lesen, aber ich werde nie eine Bestätigung finden, wenn ich hinschaue. Sie heben eine andere Möglichkeit hervor, OP könnte HDF5-Dateien lesen/schreiben, wobei MATLAB auf jeden Fall mit der eigenen Implementierung von MAT-Dateien umgehen kann. –

+0

@HPM Ausgezeichneter Punkt. Ich werde das erwähnen. –

+0

HDF5 ist Reihenmajor. Mat ist Spaltenmajor. Die aktuelle 'help' auf hdf5write erklärt ein wenig, warum dies eine schlechte Sache sein kann. – KitsuneYMG

Verwandte Themen