168 votes

Un outil pour convertir le code MATLAB en Python

J'ai un tas de code MATLAB de ma thèse de MS que je veux maintenant convertir en Python (en utilisant numpy/scipy et matplotlib) et distribuer en tant que source ouverte. Je connais les similitudes entre les bibliothèques scientifiques de MATLAB et de Python, et les convertir manuellement ne prendra pas plus de quinze jours (à condition que j'y travaille tous les jours pendant un certain temps). Je me demandais s'il existait déjà un outil capable d'effectuer cette conversion.

9 votes

Une autre possibilité est de publier votre code source tel quel et de le tester dans Octave (www.gnu.org/software/octave), qui est compatible à 99 % avec Matlab.

4 votes

@josliber : Pouvons-nous déplacer cette question vers softwarerecs.stackexchange.com pour qu'il puisse être rouvert ?

0 votes

@andersongreen la question est trop vieille pour la migration

177voto

johntex Points 734

Il existe plusieurs outils pour convertir le code Matlab en code Python.

Le seul qui a vu une activité récente (dernier commit de juin 2018) est le suivant . S centre commercial M atlab t o P compilateur ython (également développé ici : SMOP@chiselapp ).

D'autres options sont possibles :

  • LiberMate : traduire de Matlab vers Python et SciPy (Nécessite Python 2, dernière mise à jour il y a 4 ans).
  • OMPC : Matlab vers Python (un peu dépassé).
  • Mat2py : Matlab à Python (nécessite Python 2).

De plus, pour ceux qui sont intéressés par une interface entre les deux langues et pas conversion :

  • pymatlab : communiquer à partir de Python en envoyant des données à l'espace de travail MATLAB, en opérant sur elles avec des scripts et en récupérant les données résultantes.
  • Trous de ver Python-Matlab : les deux sens d'interaction sont pris en charge.
  • Pont Python-Matlab : utiliser Matlab à partir de Python, propose matlab_magic pour iPython, pour exécuter du code matlab normal à partir d'ipython.
  • PyMat : Contrôler une session Matlab depuis Python.
  • pymat2 : suite du PyMat, apparemment abandonné.
  • mlabwrap , mlabwrap-purepy : faire en sorte que Matlab ressemble à une bibliothèque Python (basée sur PyMat).
  • oct2py : exécutez les commandes GNU Octave à partir de Python.
  • pymex : Embarque l'interpréteur Python dans Matlab, aussi sur Échange de fichiers .
  • matpy : Accéder à MATLAB de différentes manières : créer des variables, accéder aux fichiers .mat, interface directe avec le moteur MATLAB (nécessite l'installation de MATLAB).
  • MatPy : Package Python pour l'algèbre linéaire numérique et le traçage avec une interface de type MatLab.

Il pourrait être utile de consulter ce site pour obtenir d'autres conseils sur la migration :

Sur une note différente, bien que je ne sois pas un fortran pour les personnes qui pourraient le trouver utile, il y en a un :

3 votes

Quelqu'un a-t-il un commentaire sur ce qui fonctionne le mieux ou sur les cas qui échouent ?

8 votes

Je ne les ai pas encore testés non plus, mais il semble que smop ait la seule particularité d'être activement maintenu, par le développeur original, sur github, avec une suite de tests.

0 votes

Quelle est la plus rapide pour appeler des fonctions matlab à partir des méthodes établissant une interface ?

10voto

denis Points 7316

Il y a un traducteur Matlab-Python open-source -- Je ne l'ai pas utilisé cependant.

7voto

norweeg Points 71

Il y a aussi oct2py qui peut appeler des fichiers .m dans python.

https://pypi.python.org/pypi/oct2py

Il nécessite GNU Octave, qui est hautement compatible avec MATLAB.

https://www.gnu.org/software/octave/

1voto

JoshAdel Points 15911

Je ne connais pas d'outils automatiques, mais un guide général est disponible ici : http://www.scipy.org/NumPy_for_Matlab_Users

En général, je regarderais simplement la documentation de numpy qui est très bonne. Certains des noms de méthodes correspondent directement, bien qu'il y ait des différences. Il ne m'a pas fallu longtemps pour passer de Matlab à Numpy lorsque j'ai fait le saut il y a quelques années.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X