Je travaille avec Python et MATLAB en ce moment et j'ai un tableau 2D dans Python que je dois écrire dans un fichier et ensuite pouvoir lire dans MATLAB en tant que matrice. Des idées sur la façon de procéder?
Merci!
Si vous utilisez numpy/scipy, vous pouvez utiliser le scipy.io.savemat
une fonction:
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})
Maintenant, vous pouvez charger ces données dans MATLAB en utilisant Fichier -> Charger les données. Sélectionnez le fichier et la variable arr
(une matrice 3x3) sera disponible dans votre environnement.
Remarque: je l'ai fait sur scipy 0.7.0. (scipy 0.6 a savemat
dans le scipy.io.mio
module.) Voir la dernière documentation pour plus de détails
EDIT: lien mis à jour grâce à @ gnovice .
Je pense que ars a la réponse la plus simple pour enregistrer les données dans un fichier .mat à partir de Python (en utilisant savemat ). ajoutez un peu à leur réponse, vous pouvez également charger le fichier .mat dans MATLAB par programmation en utilisant la fonction CHARGER au lieu de le faire à la main en utilisant la commande MATLAB menu fenêtre ...
Vous pouvez utiliser la syntaxe de commande de LOAD:
load c:/tmp/arrdata.mat
ou la forme de la syntaxe de la fonction (si le chemin du fichier est stocké dans une chaîne):
filePath = 'c:/tmp/arrdata.mat';
data = load(filePath);
J'ai écrit une petite fonction pour faire la même chose, sans avoir besoin de numpy. Il prend une liste de listes et renvoie une chaîne avec une matrice au format MATLAB.
def arrayOfArrayToMatlabString(array):
return '[' + "\n ".join(" ".join("%6g" % val for val in line) for line in array) + ']'
Écrivez "myMatrix = " + arrayOfArrayToMatlabString(array)
dans un fichier .m
, Ouvrez-le dans matlab et exécutez-le.
J'utiliserais probablement numpy.savetxt('yourfile.mat',yourarray)
dans Python puis yourarray = load('yourfile.mat')
dans MATLAB.
Vous pouvez également appeler matlab directement depuis python:
from mlabwrap import mlab
import numpy
a = numpy.array([1,2,3])
mlab.plot(a)
La boîte à outils npy-matlab peut lire *.npy
fichiers binaires dans MATLAB. *.npy
les fichiers peuvent être exportés directement avec le module NumPy. De la documentation:
>> a = Rand(5,4,3);
>> writeNPY(a, 'a.npy');
>> b = readNPY('a.npy');
>> sum(a(:)==b(:))
ans =
60
npy-matlab est une simple collection de fichiers M disponible auprès de GitHub , avec une licence BSD à 2 clauses.
Vous pouvez écrire la matrice en Python dans un fichier CSV et la lire dans MATLAB en utilisant csvread.