Hauptinhalt

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 textwrap

Weitere Informationen finden Sie unter Access Python Modules from MATLAB.

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 pyrun oder pyrunfile definiert 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 starten Sie MATLAB im In-Prozess-Ausführungsmodus neu.

    Die Funktionen pyrun und pyrunfile unterstützen keine Klassen mit lokalen Variablen, die durch andere lokale Variablen über Methoden initialisiert werden. Erstellen Sie für eine solche Verwendung ein Python-Modul und greifen Sie mit dem Präfix py. darauf zu.

  • Die Typkonvertierung basierend auf Python-Typ-Anmerkungen wird für pyrun, pyrunfile und den Task Run Python Code (Python-Code ausführen) nicht unterstützt, falls Sie nativen Python-Code als Eingabe bereitstellen.

Siehe auch

|

Themen

Unterrichtsmaterialien