分享缩略图

分享到:
链接已复制
首页> 新闻中心>

[matlab]matlab调用python的各种方法

2025-06-24 12:06:53

来源:新华网

字体:

前言。

MATLAB,可以使用 。py 。调用Python模块和函数的函数。在此基础上,Python中的各种模块࿰可以很容易地调用c;方便我们在神经网络上的应用模拟。

使用MATLAB调用Python模块的基本步骤:

确保您的系统已正确安装Python,并将Python添加到系统的环境变量中。

在MATLAB命令窗口,使用 。pyversion 。命令检查MATLAB目前使用的Python版本。确保它是你想调用的Python版本。

使用 。py.module_name 。Python模块引入语法。 。module_name 。Python模块的名称是你要调用的。

在Python模块中调用函数或方法。使用 。. 。操作符访问模块中的函数和方法。

1 调用自定义python函数。

1。

2。

3。

4。

5。

%。添加函数模块路径, 如果路径不在,则无法搜索。

py.sys.path().append(。'fun/to/path')。

mymod。 =py.importlib.import_module(。'py_name') 。 %。不要带py后缀,否则会报错。

a。 =mymod.print_num(。1。)。

disp(a)。

例子。

1。

2。

3。

# num.py。

def。print_num(num):。

   。return。num。

1。

2。

3。

4。

5。

6。

%。添加函数模块路径, 若路径不在,则无法搜索。

py.sys.path().append(。'fun/to/path')。

mymod。 =py.importlib.import_module(。'num') 。 %。不要带py后缀,否则会报错。

a。 =mymod.print_num(。1。)。

disp(pwd)。

disp(a)。

2 访问 Python 内置模块。

要访问 Python 库,请在 Python 名称前添加 。py. 。前缀。访问math模块:

1。

2。

3。

4。

5。

%。引入Python模块。

%。py.math;

%。在Python模块中调用函数。

result。 =py.math.sqrt(。4。);

disp(result); 。 %。显示结果。

调用list、textwrap:

1。

2。

3。

4。

a。 =py.。list。({ 。'This','is a','list'});

disp(a);

b。 =py.textwrap.wrap(。'This is a string');

disp(b);

3 从 MATLAB 操作python脚本。

3.1 PYRUNFILE(FILE)。

PYRUNFILE(FILE) 执行 Python 脚本文件 FILE,可提供标量字符串,cellstr 或 char 数组。 FILE 必须指定绝对路径或相对路径-相对于当前工作目录󿀌扩展名为“.py"文件的路径。如果脚本文件需要任何命令行参数,在要执行的文件路径之后,可以提供它们 FILE 中,由空格字符分隔。

格式。

1。

2。

%。返回值的。

pyrunfile(。"fun.py")。

例子。

1。

2。

3。

4。

5。

6。

7。

# 定义num.py函数。

def。print_num(num。=1。):。

  。print。(。"执行print_num函数")。

  。return。num。

if。__name__。 =="__main__":。

  。b。 =print_num(。3。)。

  。print。(。"hello world!")。

在matlab中调用,print打印的值可以在命令行窗口获得。

1。

2。

3。

4。

5。

%。a string, cellstr。 or。a char array。

%。添加当前python的文件路径。

py.sys.path().append(。'fun/to/path')。

%。调用此函数。

pyrunfile(。"num.py")。

3.2 [ OUTVARS ] = PYRUNFILE(FILE, OUTPUTS)。

[ OUTVARS ] = PYRUNFILE(FILE, OUTPUTS) 执行文件并返回任何变量 Python 生成到 MATLAB,通过指定 Python 变量的名称在 OUTPUTS 中并在 OUTVARS 中捕获返回值。 输出可以作为字符串提供,cellstr 或 char 数组。

格式。

1。

2。

%。返回值的。

out_vulue。 =pyrunfile(。"fun.py", "var_nam")。

例子。

1。

2。

3。

4。

5。

# num.py。

def。print_num(num。=1。):。

  。return。num。

if。__name__。 =="__main__":。

  。b。 =print_num(。3。)。

在matlab中调用,这里不需要导入这个函数󿀌程序会自动搜索此函数:。

1。

2。

3。

4。

5。

%。a string, cellstr。 or。a char array。

%。添加当前python的文件路径。

py.sys.path().append(。'fun/to/path')。

%。调用此函数。

myListFile。 =pyrunfile(。"num.py", "b")。

denominator分母,imag虚部,real实部,numerator分子。

获得更多的返回变量。

1。

2。

3。

4。

5。

6。

7。

8。

9。

# 已定义的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!")。

￰在上述代码中c;我们定义了a、b、三个c变量,这就是我们想要得到的,可采用以下方法:。

1。

[a, b, c]。 =pyrunfile(。"num.py", [。"a", "b", "c"]);

可以发现󿀌a、所有b的值都成功获得,但是c没有成功󿀌在函数print_num中,零时变量,获取不到。

3.3 [ OUTVARS ] = PYRUNFILE(FILE, OUTPUTS, varargin{ INPUTS})。

[ OUTVARS ] = PYRUNFILE(FILE, OUTPUTS, varargin{ INPUTS}) 执行文件返回OUTPUTS, 并将其分配给 OUTVARS,使用 varargin{ INPUTS} 传递的 MATLAB 数据。 varargin{ INPUTS} 可用于将 MATLAB 数据传递给 Python 表达式,格式:名称-值对�名称要分配 Python 变量名称,并且该值是 MATLAB 可访问工作区域中的数据或变量名称。 varargin{ INPUTS}只能用于传输可以自动转换为python格式的数据。

格式一。

1。

2。

%。返回值的。

out_vulue。 =pyrunfile(。"fun.py argv1 argv2 ...argvn", "var_nam")。

例子。

1。

2。

3。

4。

5。

6。

7。

8。

9。

10。

# 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)。

调用。

1。

b。 =pyrunfile(。"num.py 1", "b");

格式二。

1。

2。

%。返回值的。

out_vulue。 =pyrunfile(。"fun.py", "var_nam", arg1。=v1, arg2。=v2)。

例子。

1。

2。

3。

4。

5。

6。

7。

8。

9。

10。

11。

# 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)。

调用:。

1。

[a, b]。 =pyrunfile(。"num.py", [。"a", "b"], x。=1。, y。=2。);

总结。

本文介绍了matlab调用python的各种方法。

【责任编辑:新华网】
返回顶部