Estoy trabajando con Python y MATLAB en este momento y tengo una matriz 2D en Python que necesito escribir en un archivo y luego poder leerlo en MATLAB como una matriz. ¿Alguna idea sobre cómo hacer esto?Matriz de Python a MATLAB
Gracias!
Estoy trabajando con Python y MATLAB en este momento y tengo una matriz 2D en Python que necesito escribir en un archivo y luego poder leerlo en MATLAB como una matriz. ¿Alguna idea sobre cómo hacer esto?Matriz de Python a MATLAB
Gracias!
Puede escribir la matriz en Python en un archivo CSV y leerla en MATLAB usando csvread.
Intenté incluir un enlace a csvread (http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/ref/csvread.html&http://www. google.com/search?hl=en&rlz=1C1GGLS_en-USUS294US304&q=matlab+csvread&aq=f&oq=&aqi=) en la respuesta. – Jacob
Si utiliza numpy/scipy, puede utilizar 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 mediante Archivo -> Cargar datos. Seleccione el archivo y la variable arr
(una matriz 3x3) estará disponible en su entorno.
Nota: Hice esto en scipy 0.7.0. (0,6 scipy tiene savemat
en el módulo scipy.io.mio
.) Ver los latest documentation for more detail
EDIT: actualización de enlace gracias a @gnovice.
Ese enlace no parece funcionar para mí. Quizás este funcione mejor: http: //docs.scipy.org/doc/scipy/reference/generated/scipy.io.savemat.html – gnovice
El enlace funciona bien en mi extremo. Pero su enlace es mejor, es para los últimos documentos (0.7+) mientras que el mío fue para 0.6, de ahí el módulo diferente (tengo un marcador antiguo). Gracias gnovice! – ars
¡Me alegra ayudar! =) – gnovice
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) + ']'
Escribir "myMatrix = " + arrayOfArrayToMatlabString(array)
a un archivo .m
, abrirlo en MATLAB, y ejecutarlo.
Creo que ars tiene la respuesta más directa para guardar los datos en un archivo .mat de Python (usando savemat). Para añadir un poco de su respuesta, también se puede cargar el archivo .mat en MATLAB mediante programación utilizando la función LOAD en lugar de hacerlo a mano usando el menú de la ventana de comandos de MATLAB ...
Puede utilizar el comando sintaxis forma de CARGA:
load c:/tmp/arrdata.mat
o la forma de sintaxis función (si tiene la ruta del archivo almacenado en una cadena):
filePath = 'c:/tmp/arrdata.mat';
data = load(filePath);
+1; ¡Ordenado! No uso matlab lo suficiente, y siempre termino buscando a tientas en los menús en lugar de solo buscar el comando correcto. La carga parecería obvia. Ejem. :-) – ars
También puede call matlab directamente del pitón:
from mlabwrap import mlab
import numpy
a = numpy.array([1,2,3])
mlab.plot(a)
utilizaría probablemente numpy.savetxt('yourfile.mat',yourarray)
en Python y luego yourarray = load('yourfile.mat')
en MATLAB.
Esta biblioteca npy-matlab puede leer * .npy archivos binarios en matlab. * Los archivos .npy se pueden exportar directamente con el módulo numpy.
Muchas gracias a todos por los grandes consejos! ¡Funcionó! –