Est-il possible d'exécuter des fonctions MATLAB à partir de Python? Je cherche sur Internet, je n'ai trouvé que PyMat. Le problème, c'est que la version compilée ne prend en charge que Python2.2 et que j'utilise la version 2.6. J'ai donc essayé de télécharger le code source afin de pouvoir le compiler moi-même. Mais je ne peux pas le compiler, VC ++ express ne semble pas avoir les fonctionnalités nécessaires pour le compiler. Est-ce que quelqu'un a la version compilée pour PC? ou des substituts à PyMat? Merci
Réponses
Trop de publicités?Je sais que c'est une vieille question, et a été répondu. Mais je cherchais la même chose (pour les Mac) et a constaté que il ya quelques options différentes méthodes d'interaction avec matlab et les différents niveaux de maturité. Voici ce que j'ai trouvé:
pymat
Un faible niveau de l'interface de Matlab à l'aide de l'matlab moteur (libeng
) pour la communication (essentiellement une bibliothèque qui vient avec matlab). Le module doit être compilé et lié avec libeng.
http://pymat.sourceforge.net
Dernière mise à jour: 2003
pymat2
Un peu courte durée poursuite de la pymat développement. Semble fonctionner sur windows (y compris 64 bits), linux et mac (avec quelques modifications).
https://code.google.com/p/pymat2/
Dernière mise à jour: 2012
mlabwrap
Une interface de haut niveau qui est un module qui doit compilation et la liaison à l'encontre libeng
. Il expose les fonctions Matlab pour python, donc vous pouvez faire des choses amusantes comme
mlab.plot(x, y, 'o')
http://mlabwrap.sourceforge.net
Dernière mise à jour le: 2009
mlab
Un reconditionnement de l'effort de mlabwrap. Fondamentalement, il remplace le code c++ qui relie contre "libeng" dans mlabwrap avec un module python (matlabpipe) qui communique avec matlab par l'intermédiaire d'un tuyau. Le principal avantage de cela est qu'il n'a pas besoin de compilation de tout genre.
Malheureusement, le paquet a actuellement un couple de bugs et ne semble pas fonctionner sur mac à tous. Je l'ai signalé quelques-uns d'entre eux, mais a abandonné par la suite. Aussi, être préparé pour beaucoup de ruse et d'un tas d'assez laid hacks si vous devez aller dans le code source ;-) Si cela devient plus mature peut-être l'une des meilleures options.
https://github.com/ewiger/mlab
dernière mise à jour: 2013
pymatlab
Un nouveau package (2010) qui interagit également avec Matlab par libeng
. Contrairement aux autres packages cette on charge le moteur de la bibliothèque par le biais de ctypes donc pas de compilation nécessaire. Ce n'est pas sans défauts, mais toujours maintenu et l' (64 bits Mac spécifique) des questions que je trouve devrait être assez facile à corriger.
(edit 2014-05-20: il semble que ces questions ont déjà été corrigés dans la source de tant de choses doivent être bien avec 0.2.4)
http://pymatlab.sourceforge.net
dernière mise à jour: 2014
python-matlab-pont
Aussi un nouveau package qui est toujours activement maintenu. Communique avec Matlab par une sorte de support. Malheureusement, l'exposé des fonctions sont un peu limités. Je ne pouvais pas comprendre comment faire pour appeler une fonction qui prend les structures en tant que paramètres. Nécessite zmq, pyzmq et IPython qui sont assez faciles à installer.
http://arokem.github.io/python-matlab-bridge
dernière mise à jour: 2014
Une autre option est Mlabwrap
:
Mlabwrap est un pont python vers Matlab® de haut niveau qui permet à Matlab de ressembler à une bibliothèque python normale.
Cela fonctionne bien avec les tableaux numpy. Un exemple de la page d'accueil:
>>> from mlabwrap import mlab; from numpy import *
>>> xx = arange(-2*pi, 2*pi, 0.2)
>>> mlab.surf(subtract.outer(sin(xx),cos(xx)))
PyMat semble avoir été abandonné.
Je suppose que vous êtes sur Windows pour pouvoir toujours utiliser l'approche la plus simple et utiliser l'interface COM de Matlab:
>>> import win32com.client
>>> h = win32com.client.Dispatch('matlab.application')
>>> h.Execute ("plot([0 18], [7 23])")
>>> h.Execute ("1+1")
u'\nans =\n\n 2\n\n'
Plus d'infos ici
Il existe un pont python-matlab unique en ce sens que Matlab s'exécute en arrière-plan, de sorte que vous n'avez pas le coût de démarrage chaque fois que vous appelez une fonction Matlab. https://github.com/jaderberg/python-matlab-bridge
c'est aussi simple que télécharger et le code suivant:
from pymatbridge import Matlab
mlab = Matlab(matlab='/Applications/MATLAB_R2011a.app/bin/matlab')
mlab.start()
res = mlab.run('path/to/yourfunc.m', {'arg1': 3, 'arg2': 5})
print res['result']
où le contenu de yourfunc.m ressemblerait à ceci:
%% MATLAB
function lol = yourfunc(args)
arg1 = args.arg1;
arg2 = args.arg2;
lol = arg1 + arg2;
end
voir cette page: Un compilateur MATLAB®-to-Python® Open-Source