2012-03-16 18 views
6

Estoy tratando de leer una matriz producida en Matlab en una matriz 2D en Java. He estado usando jmatio hasta el momento para escribir desde java a un archivo .mat (con éxito), pero ahora no puedo ir al revés. He conseguido importar una matriz en un objeto MLArray utilizando este código:leyendo datos de Matlab en Java

matfilereader = new MatFileReader("filename.mat"); 
MLArray j = matfilereader.getMLArray("dataname"); 

Pero aparte de conseguir la representación de cadena no conseguía acceder a los datos en sí. No encontré ningún ejemplo para esto o documentación en la biblioteca, y de hecho escribí una función para analizar la cadena intire en una matriz doble [] [] pero eso solo es bueno si la matriz es más pequeña que 1000 elementos ...

agradecería cualquier experiencia o consejos, gracias ,

Amir

+0

¿Ha intentado utilizar MLDouble subclase en lugar de MLArray? ¿Has registrado en MATLAB que el archivo mat se guardó correctamente? – yuk

+0

¿Qué quiere decir usar MLDouble en lugar de MLArray? MatfileReader tiene solo esta API de variables de retorno como MLArrays. Y con respecto al archivo, sí, he probado varios y están bien. – Amir

+0

Quise lanzar MLArray a MLDouble. ¿Puedes probar 'MLDouble j = (MLDouble) matfilereader.getMLArray (" dataname ");'? – yuk

Respuesta

0

no estoy familiarizado con esa herramienta, pero es bastante viejo. Intente guardar en una versión anterior del archivo *.mat y vea si sus resultados cambian. Es decir, agregue el indicador '-v7.0' o '-v6' cuando guarde el archivo r * .mat.

código Ejemplo:

save filename var1 var2 -v7.0 

o

save filename var1 var2 -v6 
+0

Intenté eso ahora, con los mismos resultados. Pero no es un error que tengo o algo relacionado con el archivo, el problema es qué código usar para obtener MLArray en variables java. – Amir

2

matfilereader.getMLArray tiene varias subclases para acceder a diferentes tipos de datos en el objeto MLArray.

Representar doble matriz que puede echar a MLArray MLDouble:

MLDouble j = (MLDouble)matfilereader.getMLArray("dataname"); 
Cuestiones relacionadas