open - Matriz de Python a MATLAB
notimplementederror: please use hdf reader for matlab v7.3 files (7)
Estoy trabajando con Python y MATLAB ahora mismo y tengo una matriz 2D en Python que necesito para escribir en un archivo y luego poder leerlo en MATLAB como una matriz. ¿Alguna idea sobre cómo hacer esto?
¡Gracias!
Creo que ars tiene la respuesta más directa para guardar los datos en un archivo .mat de Python (usando savemat ). Para agregar solo un poco a su respuesta, también puede cargar el archivo .mat en MATLAB programáticamente usando la función LOAD lugar de hacerlo manualmente usando el menú de la ventana de comandos de MATLAB ...
Puede usar la forma de sintaxis de comando de LOAD:
load c:/tmp/arrdata.mat
o la forma de sintaxis de la función (si tiene la ruta del archivo almacenada en una cadena):
filePath = ''c:/tmp/arrdata.mat'';
data = load(filePath);
Escribí una pequeña función para hacer lo mismo, sin necesidad de numpy. Toma una lista de listas y devuelve una cadena con una matriz formateada en MATLAB.
def arrayOfArrayToMatlabString(array):
return ''['' + "/n ".join(" ".join("%6g" % val for val in line) for line in array) + '']''
Escriba "myMatrix = " + arrayOfArrayToMatlabString(array)
en un archivo .m
, ábralo en matlab y ejecútelo.
Esta biblioteca npy-matlab puede leer * .npy archivos binarios en matlab. * Los archivos .npy se pueden exportar directamente con el módulo numpy.
Probablemente usaría numpy.savetxt(''yourfile.mat'',yourarray)
en Python y luego yourarray = load(''yourfile.mat'')
en MATLAB.
Puedes escribir la matriz en Python en un archivo CSV y leerla en MATLAB usando csvread.
También puede llamar a matlab directamente desde python:
from mlabwrap import mlab
import numpy
a = numpy.array([1,2,3])
mlab.plot(a)
Si usa numpy / scipy, puede usar la función scipy.io.savemat
:
import numpy, scipy.io
arr = numpy.arange(10)
arr = arr.reshape((3, 3)) # 2d array of 3x3
scipy.io.savemat(''c:/tmp/arrdata.mat'', mdict={''arr'': arr})
Ahora puede cargar estos datos en MATLAB usando Archivo -> Cargar datos. Seleccione el archivo y la variable arr
(una matriz de 3x3) estará disponible en su entorno.
Nota: Hice esto en scipy 0.7.0. (scipy 0.6 tiene savemat
en el módulo scipy.io.mio
). Consulte la documentación más reciente para obtener más detalles.
EDITAR: enlace actualizado gracias a @gnovice .