Attualmente sto lavorando con Python e MATLAB in questo momento e ho un array 2D in Python che devo scrivere su un file e quindi poterlo leggere in MATLAB come una matrice. Qualche idea su come fare questo?Matrix da Python a MATLAB
Grazie!
Attualmente sto lavorando con Python e MATLAB in questo momento e ho un array 2D in Python che devo scrivere su un file e quindi poterlo leggere in MATLAB come una matrice. Qualche idea su come fare questo?Matrix da Python a MATLAB
Grazie!
È possibile scrivere la matrice in Python in un file CSV e leggerla in MATLAB utilizzando csvread.
Ho provato a includere un collegamento 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=it&rlz=1C1GGLS_en-USUS294US304&q=matlab+csvread&aq=f&oq=&aqi=) nella risposta. – Jacob
Se si utilizza NumPy/SciPy, è possibile utilizzare la funzione di 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})
Ora, è possibile caricare questi dati in MATLAB utilizzando File -> Carica dati. Selezionare il file e la variabile arr
(una matrice 3x3) sarà disponibile nel proprio ambiente.
Nota: l'ho fatto su scipy 0.7.0. (SciPy 0,6 ha savemat
nel modulo scipy.io.mio
.) Vedere le latest documentation for more detail
EDIT: aggiornato di collegamento grazie alla @gnovice.
Questo link non sembra funzionare per me. Forse questo funzionerebbe meglio: http: //docs.scipy.org/doc/scipy/reference/generated/scipy.io.savemat.html – gnovice
Il link funziona bene alla mia fine. Ma il tuo link è migliore - è per gli ultimi documenti (0.7+) mentre il mio era per 0.6, quindi il modulo diverso (ho un vecchio segnalibro). Grazie gnovice! – ars
Felice di aiutare! =) – gnovice
Ho scritto una piccola funzione per fare la stessa cosa, senza bisogno di numpy. Prende un elenco di liste e restituisce una stringa con una matrice in formato MATLAB.
def arrayOfArrayToMatlabString(array):
return '[' + "\n ".join(" ".join("%6g" % val for val in line) for line in array) + ']'
Write "myMatrix = " + arrayOfArrayToMatlabString(array)
in un file .m
, aprirlo in MATLAB, e eseguirlo.
Penso che ars abbia la risposta più semplice per il salvataggio dei dati in un file .mat da Python (utilizzando savemat). Per aggiungere solo un po 'alla loro risposta, è anche possibile caricare il file .mat in MATLAB a livello di codice usando la funzione LOAD invece di farlo manualmente usando il menu della finestra di comando MATLAB ...
È possibile utilizzare il comando sintassi forma di LOAD:
load c:/tmp/arrdata.mat
o la forma della sintassi funzione (se avete il percorso del file memorizzato in una stringa):
filePath = 'c:/tmp/arrdata.mat';
data = load(filePath);
+1; Neat! Non uso abbastanza MATLAB e finisco sempre per cercare nei menu invece di cercare il comando giusto. Il carico sembrerebbe ovvio. Ahem. :-) – ars
È anche possibile call matlab direttamente dal pitone:
from mlabwrap import mlab
import numpy
a = numpy.array([1,2,3])
mlab.plot(a)
avrei probabilmente usare numpy.savetxt('yourfile.mat',yourarray)
in Python e poi yourarray = load('yourfile.mat')
in MATLAB.
Questa libreria npy-matlab può leggere i file binari * .npy in MATLAB. * I file .pyp possono essere esportati direttamente con il modulo numpy.
Grazie mille a tutti per i fantastici suggerimenti! Ha funzionato! –