web-dev-qa-db-fra.com

Comment exécuter du code MATLAB depuis l'intérieur Python

J'essaie d'exécuter un code MATLAB en utilisant Python (j'utilise python 3.6).

Je n'ai pas besoin de passer d'arguments ou d'obtenir des sorties. J'ai juste besoin d'une ligne de code sur Python qui exécutera simplement le code MATLAB.

J'ai vu des réponses en ligne qui disent d'utiliser matlabroot et d'utiliser cela dans l'invite de commande pour installer une sorte de moteur mais il a dit que je ne pouvais pas l'installer parce que mon Python la version n'était pas assez ancienne (ce qui n'a aucun sens).

Existe-t-il une version plus simple ou simplement une autre façon de procéder?

Merci!

9
Julian

Utilisation d'Oct2Py

Votre première option est d'utiliser Oct2Py qui fonctionne avec Octave , un programme gratuit et open source qui peut exécuter des fichiers et des fonctions Matlab. Installez-le simplement avec la commande Terminal suivante:

pip3 install oct2py

Ensuite, vous pouvez exécuter le code MatLab à partir de votre script Python comme ça:

from oct2py import Oct2Py
oc = Oct2Py()


script = "function y = myScript(x)\n" \
         "    y = x-5" \
         "end"

with open("myScript.m","w+") as f:
    f.write(script)

oc.myScript(7)

Utilisation de MatLab

Si vous souhaitez utiliser le moteur MatLab d'origine, vous devrez suivre les étapes suivantes:

1. Installation de la bibliothèque MatLab

En suivant les instructions de cette page vous devez d'abord trouver votre dossier racine MatLab en ouvrant MatLab et en exécutant la commande matlabroot. Cela devrait vous donner le dossier racine de Matlab.

Ensuite, vous ouvrez votre terminal (si vous utilisez Windows, vous pouvez le faire en appuyant sur Windows + R, puis tapez cmd et appuyez sur Enter.) Dans le terminal, vous exécutez le code suivant:

cd matlabroot\extern\engines\python

Assurez-vous de remplacer matlabroot par le chemin que vous venez de trouver. Ensuite tu cours

python3 setup.py install

Pour installer la bibliothèque MatLab Python.

2. Utilisation de la bibliothèque MatLab

En suivant les instructions de cette page Vous pouvez alors

import matlab.engine

eng = matlab.engine.start_matlab()
tf = eng.isprime(37)
print(tf)

Si vous souhaitez exécuter scripts entiers , vous pouvez enregistrer vos scripts en tant que fichier MatLab * .m dans votre dossier actuel et les exécuter comme ceci:

import matlab.engine
eng = matlab.engine.start_matlab()
eng.myMatlabFile(nargout=0)

Vous pouvez également créer le fichier MatLab à partir de Python:

import matlab.engine

script = "b = 5;\n" \
         "h = 3;\n" \
         "a = 0.5*(b.* h)"

with open("myScript.m","w+") as f:
    f.write(script)

eng = matlab.engine.start_matlab()
eng.myScript(nargout=0)

J'espère que ça aide :)

13
pascscha