Detaillierte Erläuterung verschiedener Methoden zum Aufrufen von Python aus Matlab
Artikelverzeichnis
In MATLAB können Sie py
Funktionen verwenden, um Python-Module und -Funktionen aufzurufen. Auf dieser Basis können wir problemlos verschiedene Module in Python aufrufen, um unsere Anwendungssimulation im neuronalen Netzwerk zu erleichtern.
Im Folgenden sind die grundlegenden Schritte zum Aufrufen eines Python-Moduls mit MATLAB aufgeführt:
-
Stellen Sie sicher, dass Ihr System Python korrekt installiert und Python zu den Systemumgebungsvariablen hinzugefügt hat.
-
Verwenden Sie im MATLAB-Befehlsfenster
pyversion
den Befehl, um die derzeit von MATLAB verwendete Python-Version zu überprüfen. Stellen Sie sicher, dass es sich um die Version von Python handelt, die Sie aufrufen möchten. -
Verwenden Sie
py.module_name
die Syntax, um Python-Module zu importieren.module_name
ist der Name des Python-Moduls, das Sie aufrufen möchten. -
Rufen Sie eine Funktion oder Methode in einem Python-Modul auf. Verwenden Sie
.
Operatoren, um auf Funktionen und Methoden in einem Modul zuzugreifen.
1 Rufen Sie die benutzerdefinierte Python-Funktion auf
% 添加函数模块路径, 如果路径不在则搜索不到
py.sys.path().append('fun/to/path')
mymod = py.importlib.import_modular('py_name') % 不要带py后缀,不然报错
a = mymod.print_num(1)
disp(a)
Beispiel
# num.py
def print_num(num):
return num
% 添加函数模块路径, 如果路径不在则搜索不到
py.sys.path().append('fun/to/path')
mymod = py.importlib.import_modular('num') % 不要带py后缀,不然报错
a = mymod.print_num(1)
disp(pwd)
disp(a)
2 Zugriff auf integrierte Python-Module
Um auf eine Python-Bibliothek zuzugreifen, stellen Sie dem Python-Namen das Präfix voran py.
.
Greifen Sie auf das Mathematikmodul zu:
% 引入Python模块
% py.math;
% 调用Python模块中的函数
result = py.math.sqrt(4);
disp(result); % 显示结果
Anrufliste, Textumbruch:
a = py.list({
'This','is a','list'});
disp(a);
b = py.textwrap.wrap('This is a string');
disp(b);
3 Ausführen von Python-Skripten aus MATLAB
3.1 PYRUNFILE(DATEI)
PYRUNFILE(FILE) führt die Python-Skriptdatei FILE aus, die als Skalarstring, Cellstr oder Char-Array bereitgestellt werden kann. FILE muss einen absoluten oder einen relativen Pfad angeben – den Pfad zu einer Datei mit der Erweiterung „.py“, relativ zum aktuellen Arbeitsverzeichnis. Wenn die Skriptdatei Befehlszeilenargumente erfordert, können diese angegeben werden, indem sie in FILE nach dem Pfad zur auszuführenden Datei angegeben werden, getrennt durch Leerzeichen.
Format
% 返回值的
pyrunfile("fun.py")
Beispiel
# 定义num.py的函数
def print_num(num=1):
print("执行print_num函数")
return num
if __name__ == "__main__":
b = print_num(3)
print("hello world!")
In Matlab aufgerufen, kann das Befehlszeilenfenster den Wert durch Drucken abrufen:
% a string, cellstr or a char array
% 添加当前python的文件路径
py.sys.path().append('fun/to/path')
% 调用这个函数
pyrunfile("num.py")
3.2 [ OUTVARS ] = PYRUNFILE(DATEI, AUSGÄNGE)
[ OUTVARS ] = PYRUNFILE(FILE, OUTPUTS) führt die Datei aus und gibt alle von Python generierten Variablen an MATLAB zurück, indem der Name der Python-Variablen in OUTPUTS angegeben und der Rückgabewert in OUTVARS erfasst wird. Die Ausgabe kann als String-, Cellstr- oder Char-Array erfolgen.
Format
% 返回值的
out_vulue = pyrunfile("fun.py", "var_nam")
Beispiel
# num.py
def print_num(num=1):
return num
if __name__ == "__main__":
b = print_num(3)
In Matlab aufgerufen, muss diese Funktion nicht importiert werden. Das Programm sucht automatisch nach dieser Funktion:
% a string, cellstr or a char array
% 添加当前python的文件路径
py.sys.path().append('fun/to/path')
% 调用这个函数
myListFile = pyrunfile("num.py", "b")
Nenner Nenner, imaginärer Teil, realer Realteil, Zähler Zähler
Holen Sie sich mehr Rückgabevariablen
# 已经定义的num.py
def print_num(num=1):
c = 1
print("执行print_num函数")
return num
if __name__ == "__main__":
a = print_num(2)
b = print_num(3)
print("hello world!")
Im obigen Code haben wir drei Variablen a, b und c definiert, die wir alle erhalten möchten, sodass wir die folgende Methode verwenden können:
[a, b, c] = pyrunfile("num.py", ["a", "b", "c"]);
Es kann festgestellt werden, dass die Werte von a und b erfolgreich abgerufen wurden, c jedoch nicht. Es sollte sein, dass c eine Variable ist, wenn sie in der Funktion print_num Null ist und nicht abgerufen werden kann.
3.3 [ OUTVARS ] = PYRUNFILE(FILE, OUTPUTS, varargin{INPUTS})
[ OUTVARS ] = PYRUNFILE(FILE, OUTPUTS, varargin{INPUTS}) führt die Datei aus, gibt OUTPUTS zurück und weist sie OUTVARS zu, wobei die von varargin{INPUTS} übergebenen MATLAB-Daten verwendet werden. varargin{INPUTS} kann verwendet werden, um MATLAB-Daten an einen Python-Ausdruck im Format Name-Wert-Paare zu übergeben, wobei Name der Name der zuzuweisenden Python-Variable und Wert die MATLAB-Daten oder der Variablenname in einem zugänglichen Arbeitsbereich ist. varargin{INPUTS} kann nur zur Übergabe von Daten verwendet werden, die automatisch in das Python-Format konvertiert werden können.
Formatieren Sie eins
% 返回值的
out_vulue = pyrunfile("fun.py argv1 argv2 ...argvn", "var_nam")
Beispiel
# num.py
import sys
def print_num(num=1):
ans = num+1
return ans
if __name__ == "__main__":
arg = sys.argv[1]
print(type(arg))
b = print_num(int(arg))
print(b)
überweisen
b = pyrunfile("num.py 1", "b");
Format zwei
% 返回值的
out_vulue = pyrunfile("fun.py", "var_nam", arg1=v1, arg2=v2)
Beispiel
# num.py
def print_num(num=1):
ans = num+1
return ans
if __name__ == "__main__":
num1= x
num2 = y
a = print_num(num1)
b = print_num(num2)
print(a)
print(b)
überweisen:
[a, b] = pyrunfile("num.py", ["a", "b"], x=1, y=2);