Contenu principal

Appeler des fonctions MATLAB à partir de Python

Utilisez MATLAB® Engine API pour Python® pour appeler n’importe quelle fonction MATLAB dans le chemin MATLAB.

Si la fonction MATLAB n’est pas dans le chemin, vous pouvez l’appeler à partir du dossier courant. Par exemple, pour appeler la fonction MATLAB myFnc dans le dossier myFolder, saisissez :

import matlab.engine
eng = matlab.engine.start_matlab()
eng.cd(r'myFolder', nargout=0)
eng.myFnc()

Si myFnc se trouve dans le dossier C:/work/myfiles, vous pouvez ajouter ce dossier au chemin Python.

eng.addpath("C:/work/myfiles")

Pour ajouter un chemin à tous les sous-dossiers, saisissez :

s = eng.genpath('C:/work/myfiles')
eng.addpath(s, nargout=0)

Renvoyer un argument en sortie à partir d’une fonction MATLAB

Vous pouvez appeler directement n’importe quelle fonction MATLAB et renvoyer les résultats dans Python. Par exemple, pour déterminer si un nombre est un nombre premier, utilisez le moteur pour appeler la fonction isprime.

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

Renvoyer plusieurs arguments en sortie à partir d’une fonction MATLAB

Lorsque vous appelez une fonction avec le moteur, ce dernier renvoie par défaut un seul argument en sortie. Si vous savez que la fonction peut renvoyer plusieurs arguments, utilisez l’argument nargout pour spécifier le nombre d’arguments en sortie.

Pour déterminer le plus grand dénominateur commun de deux nombres, utilisez la fonction gcd. Définissez nargout pour renvoyer les trois arguments en sortie de gcd.

import matlab.engine
eng = matlab.engine.start_matlab()
t = eng.gcd(100.0,80.0,nargout=3)
print(t)
(20.0, 1.0, -1.0)

Ne renvoyer aucun argument en sortie à partir d’une fonction MATLAB

Certaines fonctions MATLAB ne renvoient aucun argument en sortie. Si la fonction ne renvoie aucun argument, définissez nargout à 0.

Ouvrez la documentation MathWorks® dans le navigateur web de votre système à partir de Python.

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

La fonction MATLAB doc ouvre le navigateur mais ne renvoie aucun argument en sortie. Si vous ne spécifiez pas nargout=0, le moteur génère une erreur.

Arrêter l’exécution d’une fonction

Pour arrêter l’exécution d’une fonction MATLAB, appuyez sur Ctrl+C. La touche Ctrl vous renvoie dans Python.

Utiliser des noms de fonctions pour les opérateurs MATLAB

Vous pouvez utiliser un opérateur MATLAB dans Python en appelant la fonction équivalente. Consultez MATLAB Operators and Associated Functions pour obtenir une liste des opérateurs et des noms de fonctions associés. Par exemple, pour additionner deux nombres, utilisez la fonction plus au lieu de l’opérateur +.

import matlab.engine
eng = matlab.engine.start_matlab()
a = 2
b = 3
eng.plus(a,b) 

Voir aussi

|

Rubriques