Direktaufruf von Python-Funktionen aus MATLAB heraus
Sie können direkt von MATLAB® aus Funktionen aus Python®-Bibliotheken aufrufen und Python-Anweisungen ausführen.
Zugriff auf Python-Module
Fügen Sie zum Zugriff auf Python-Bibliotheken den Präfix py. zum Python-Namen hinzu. Beispiel:
py.list({'This','is a','list'}) % Call built-in function list
py.textwrap.wrap('This is a string') % Call wrap function in module textwrapWeitere Informationen finden Sie unter Access Python Modules from MATLAB - Getting Started.
Ausführen Python-Code
Verwenden Sie zum Ausführen von Python-Anweisungen im Python-Interpreter von der MATLAB-Eingabeaufforderung aus die Funktion pyrun. Mit dieser Funktion können Sie Code ausführen, der MATLAB-Typen als Eingabe übergibt und einige oder alle der Variablen an MATLAB zurückgibt. Nehmen wir zum Beispiel an, dass Sie diese Anweisung in einem Python-Interpreter ausführen.
>>> l = ['A', 'new', 'list']
Verwenden Sie pyrun, um die Anweisung von MATLAB aus auszuführen. Um das Ergebnis an eine MATLAB-Variable myList zurückzugeben, fügen Sie "l" als ein outputs-Argument hinzu:
myList = pyrun("l = ['A', 'new', 'list']", "l");
Ausführen von Python-Skripten
Verwenden Sie zum Aufrufen eines Python-Skripts von der MATLAB-Eingabeaufforderung aus die pyrunfile-Funktion. Sie übergeben MATLAB Daten und geben Variablen auf die gleiche Weise zurück wie mit pyrun. Erstellen Sie zum Beispiel mit folgenden Anweisungen eine mklist.py-Datei:
# Python script file mklist.py:
s = 'list'
L = ['A', 'new', s]
Führen Sie das Skript von MATLAB aus:
myListFile = pyrunfile("mklist.py", "L")
myListFile =
Python list with no properties.
['A', 'new', 'list']
Zugriff auf Python-Variablen
Wenn Sie den Präfix py. verwenden, importiert MATLAB das gesamte Modul und kann auf alle Funktionen und Klassen des Python-Codes zugreifen. Wenn Sie den Python-Code jedoch mit den Funktionen pyrun oder pyrunfile ausführen, müssen Sie, wenn Sie auf Python-Daten zugreifen wollen, Python-Objekte mit dem outvars-Argument explizit an MATLAB zurückgeben.
Beschränkungen der Funktionen pyrun und pyrunfile
Python-Klassen, die mit
pyrunoderpyrunfiledefiniert wurden, können nicht geändert werden, wenn Sie eine Instanz der Klasse an MATLAB zurückgeben. Starten Sie eine neue Interpreter-Sitzung, falls Sie Klassendefinitionen ändern müssen:terminate(pyenv) pyenv(ExecutionMode="OutOfProcess")
Alternativ dazu können Sie auch MATLAB für
"InProcess"neu starten.Die Funktionen
pyrunundpyrunfileunterstützen keine Klassen mit lokalen Variablen, die durch andere lokale Variablen über Methoden initialisiert werden. Erstellen Sie für eine solche Verwendung ein Modul und greifen Sie mit dem Präfixpy.darauf zu.Die Typkonvertierung basierend auf Python-Typ-Anmerkungen wird für
pyrun,pyrunfileund den Task Run Python Code (Python-Code ausführen) nicht unterstützt, falls nativer Python-Code als Eingabe bereitgestellt wird.