Aufrufen von MATLAB-Funktionen von Python aus
Verwenden Sie die MATLAB® Engine-API für Python® zum Aufrufen einer beliebigen MATLAB-Funktion im MATLAB-Pfad.
Falls die MATLAB-Funktion nicht im Pfad liegt, kann sie aus dem aktuellen Ordner aufgerufen werden. Geben Sie beispielsweise zum Aufzurufen der MATLAB-Funktion myFnc im Ordner myFolder Folgendes ein:
import matlab.engine
eng = matlab.engine.start_matlab()
eng.cd(r'myFolder', nargout=0)
eng.myFnc()Falls sich myFnc im Ordner C:/work/myfiles befindet, können Sie diesen Ordner zum Python-Pfad hinzufügen.
eng.addpath("C:/work/myfiles")
Geben Sie Folgendes eine, um einen Pfad zu allen Unterordnern hinzuzufügen:
s = eng.genpath('C:/work/myfiles')
eng.addpath(s, nargout=0)Zurückgeben der Ausgabeargumente einer MATLAB-Funktion
Sie können jede MATLAB-Funktion direkt aufrufen und die Ergebnisse in Python zurückgeben. Um zum Beispiel festzustellen, ob eine Zahl eine Primzahl ist, rufen Sie über die Engine die isprime-Funktion auf.
import matlab.engine
eng = matlab.engine.start_matlab()
tf = eng.isprime(37)
print(tf)
True
Zurückgeben mehrerer Ausgabeargumente einer MATLAB-Funktion
Wenn Sie eine Funktion über die Engine aufrufen, gibt die Engine standardmäßig ein einziges Ausgabeargument zurück. Falls Sie wissen, dass die Funktion mehrere Argumente zurückgeben kann, verwenden Sie das Argument nargout, um die Anzahl der Ausgabeargumente festzulegen.
Um den größten gemeinsamen Nenner von zwei Zahlen zu bestimmen, verwenden Sie die Funktion gcd. Stellen Sie nargout so ein, dass die drei Ausgabeargumente von gcd zurückgegeben werden.
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)
Zurückgeben keiner der Ausgabeargumente einer MATLAB-Funktion
Einige MATLAB-Funktionen geben keine Ausgabeargumente zurück. Falls die Funktion keine Argumente liefert, setzen Sie nargout auf 0.
Öffnen Sie von Python aus die MathWorks®-Dokumentation in Ihrem System-Webbrowser.
import matlab.engine
eng = matlab.engine.start_matlab()
eng.doc(nargout=0)
Die MATLAB doc-Funktion öffnet den Browser, gibt aber keine Ausgabeargumente zurück. Wenn Sie nicht nargout=0 angeben, gibt die Engine einen Fehler aus.
Ausführen einer Funktion beenden
Das Ausführen einer MATLAB-Funktion wird durch Drücken von Strg+C beendet. Die Steuerung kehrt zu Python zurück.
Verwenden von Funktionsnamen für MATLAB-Operatoren
Sie können einen MATLAB-Operator in Python verwenden, indem Sie die entsprechende Funktion aufrufen. Eine Liste der Operatoren und der zugehörigen Funktionsnamen finden Sie unter MATLAB Operators and Associated Functions. Um zum Beispiel zwei Zahlen zu addieren, verwenden Sie die plus-Funktion anstelle des +-Operators.
import matlab.engine
eng = matlab.engine.start_matlab()
a = 2
b = 3
eng.plus(a,b)
Siehe auch
matlab.engine.MatlabEngine | matlab.engine.FutureResult