2010-04-23 4 views
10

Ho alcuni dati che vorrei salvare su un file MAT (versione 4 o 5, o qualsiasi versione, se è per questo). Il trucco: volevo farlo senza usare le librerie MATLAB, poiché questo codice non è necessario eseguire in una macchina con MATLAB. Il mio programma utilizza Java e C++, quindi qualsiasi libreria esistente in quelle lingue che raggiunge questo potrebbe aiutarmi ...Scrivere un file MAT senza utilizzare le intestazioni e le librerie matlab

Ho fatto qualche ricerca ma non ho trovato nulla in Java/C++. Tuttavia, ho trovato che Scipy su Python raggiunge questo con mio4.py o mio5.py. Ho pensato di implementarlo su java o C++, ma sembra un po 'fuori dal mio programma temporale.

Quindi la domanda è: esistono librerie in Java o C/C++ che consentano di salvare i file MAT senza utilizzare le librerie Matlab?

Grazie mille

+1

Suppongo che tu abbia trovato una copia del documento di Matematica 'MAT-file Format' e non vogliare stampare il tuo codice finché non hai esaurito la possibilità che SO ti aiuti a trovare già un - biblioteca scritta? –

risposta

12

C: matio
Java: jmatio
(Sono davvero tentato di, quindi mi, ti dicono di imparare a google)

Ma in realtà, non è così difficile scrivere matfiles utilizzando fwrite se non è necessario gestire alcune delle cose più complesse (strutture nidificate, classi, funzioni, matrice sparse, ecc.).
Vedere: http://www.mathworks.com/access/helpdesk/help/pdf_doc/matlab/matfile_format.pdf

+1

Ho avuto un problema simile qualche tempo fa e ho finito per scrivere una serie di funzioni come sostituzione drop-in per l'API matlab per scrivere .matfiles. Niente di speciale, ma fa le basi (incluse le strutture e nidificazione). È su github: http://github.com/EyNuel/matOut/wiki –

5

file MAT dalla versione 7 si basano HDF5. Ricordo che usano alcune convenzioni piuttosto divertenti, ma potresti essere in grado di decodificare ciò di cui hai bisogno. Esistono certamente librerie di scrittura HDF5 sia per Java che per C++.

Lungo queste linee, Matlab può leggere/scrivere diversi formati standard, incluso HDF5. Potrebbe essere più facile scrivere i dati in HDF5 "standard" e leggerli nella struttura dati desiderata all'interno di Matlab.

+0

+1 Pensavo di averlo letto da qualche parte ma non riesco mai a trovare conferma quando vado a cercare. Si alza un'altra possibilità, OP può leggere/scrivere file HDF5 che MATLAB può sicuramente gestire qualunque sia la propria implementazione dei file MAT. –

+0

@HPM Punto eccellente. Lo dirò. –

+0

HDF5 è riga maggiore. Mat è colonna-maggiore. L'attuale 'help' su hdf5write spiega un po 'perché questa può essere una cosa negativa – KitsuneYMG