2010-04-23 6 views
10

Tengo algunos datos que me gustaría guardar en un archivo MAT (versión 4 o 5, o cualquier versión, para el caso). El truco: quería hacer esto sin usar bibliotecas de matlab, ya que este código no necesariamente se ejecutará en una máquina con matlab. Mi programa usa Java y C++, por lo que cualquier biblioteca existente en esos idiomas que logre esto podría ayudarme ...Escribir un archivo MAT sin utilizar los encabezados y las bibliotecas de matlab

Hice algunas investigaciones pero no encontré nada en Java/C++. Sin embargo, encontré que scipy en python logra esto con mio4.py o mio5.py. Pensé en implementar esto en Java o C++, pero parece un poco fuera de mi horario.

Entonces, la pregunta es: ¿hay bibliotecas en Java o C/C++ que permitan guardar archivos MAT sin utilizar las bibliotecas de Matlab?

Muchas gracias

+1

Supongo que ha encontrado una copia del documento de The Mathwork 'Formato de archivo MAT' y no desea pasar su propio código hasta que haya agotado la posibilidad de que SO le ayude a encontrar un -Biblioteca escrita? –

Respuesta

12

C: matio
Java: jmatio
(me siento tentado a, así que, le dirá que aprender a google)

Pero, en realidad, no es tan difícil escribir matfiles utilizando fwrite si no necesita manejar algunas de las cosas más complejas (estructuras anidadas, clases, funciones, matriz dispersa, etc.).
Ver: http://www.mathworks.com/access/helpdesk/help/pdf_doc/matlab/matfile_format.pdf

+1

Tuve un problema similar hace algún tiempo y terminé escribiendo un conjunto de funciones como reemplazo directo de la API de matlab para escribir .matfiles. No es nada lujoso, pero sí lo básico (incluidas las estructuras y el anidamiento). Está en github: http://github.com/EyNuel/matOut/wiki –

5

archivos MAT desde la versión 7 se basan HDF5. Recuerdo que usan algunas convenciones bastante divertidas, pero es posible que puedas aplicar ingeniería inversa a lo que necesitas. Ciertamente, existen bibliotecas de escritura HDF5 para Java y C++.

En esta línea, Matlab puede leer/escribir en varios formatos estándar, incluido HDF5. Puede ser más fácil escribir sus datos en HDF5 "estándar" y leerlos en la estructura de datos deseada dentro de Matlab.

+0

+1 Pensé que lo leería en alguna parte, pero nunca puedo encontrar la confirmación cuando voy a buscar. Plantea otra posibilidad, OP podría leer/escribir archivos HDF5 que MATLAB definitivamente puede manejar cualquiera que sea su propia implementación de archivos MAT. –

+0

@HPM Excelente punto. Lo mencionaré. –

+0

HDF5 es una fila principal. Mat es columnista. La 'ayuda' actual en hdf5write explica un poco acerca de por qué esto puede ser malo – KitsuneYMG

Cuestiones relacionadas