找回密码
 会员注册
查看: 46|回复: 0

matlab]matlab调用python的各种方法

[复制链接]

7

主题

0

回帖

22

积分

新手上路

积分
22
发表于 2024-9-3 23:11:03 | 显示全部楼层 |阅读模式
前言在MATLAB中,可以使用 py 函数来调用Python模块和函数。在此基础上,我们可以很轻易的调用python中的各种模块,方便我们在神经网络上的应用仿真。以下是使用MATLAB调用Python模块的基本步骤:确保你的系统已经正确安装了Python,并且将Python添加到了系统的环境变量中。在MATLAB命令窗口中,使用 pyversion 命令检查MATLAB当前使用的Python版本。确保它是你希望调用的Python版本。使用 py.module_name 语法来引入Python模块。 module_name 是你要调用的Python模块的名称。调用Python模块中的函数或方法。使用 . 操作符来访问模块中的函数和方法。1调用自定义python函数12345%添加函数模块路径,如果路径不在则搜索不到py.sys.path().append('fun/to/path')mymod=py.importlib.import_module('py_name') %不要带py后缀,不然报错a=mymod.print_num(1)disp(a)例子123#num.pydefprint_num(num):   returnnum123456%添加函数模块路径,如果路径不在则搜索不到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模块:12345%引入Python模块%py.math;%调用Python模块中的函数result=py.math.sqrt(4);disp(result); %显示结果调用list、textwrap:1234a=py.list({'This','isa','list'});disp(a);b=py.textwrap.wrap('Thisisastring');disp(b);3从MATLAB运行python脚本3.1PYRUNFILE(FILE)PYRUNFILE(FILE)执行Python脚本文件FILE,它可以被提供为标量字符串、cellstr或char数组。FILE必须指定绝对路径或相对路径-相对于当前工作目录,扩展名为“.py”的文件的路径。如果脚本文件需要任何命令行参数,则可以通过提供它们在要执行的文件路径之后的FILE中,由空格字符分隔。格式12%返回值的pyrunfile("fun.py")例子1234567#定义num.py的函数defprint_num(num=1):  print("执行print_num函数")  returnnumif__name__=="__main__":  b=print_num(3)  print("helloworld!")matlab中调用,命令行窗口可以得到print打印出的值:12345%astring,cellstrorachararray%添加当前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数组。格式12%返回值的out_vulue=pyrunfile("fun.py","var_nam")例子12345#num.pydefprint_num(num=1):  returnnumif__name__=="__main__":  b=print_num(3)matlab中调用,这里不需要导入这个函数,程序会自动搜索这个函数:12345%astring,cellstrorachararray%添加当前python的文件路径py.sys.path().append('fun/to/path')%调用这个函数myListFile=pyrunfile("num.py","b")denominator分母,imag虚部,real实部,numerator分子获取更多的返回变量123456789#已经定义的num.pydefprint_num(num=1):  c=1  print("执行print_num函数")  returnnumif__name__=="__main__":  a= print_num(2)  b=print_num(3)  print("helloworld!")上面代码中,我们定义了a、b、c三个变量,这是我们都想获取,则可以通过下面的方法:1[a,b,c]=pyrunfile("num.py",["a","b","c"]);可以发现,a、b的值都成功获取了,但是c没有成功,应为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格式的数据。格式一12%返回值的out_vulue=pyrunfile("fun.pyargv1argv2...argvn","var_nam")例子12345678910#num.pyimportsysdefprint_num(num=1):  ans=num+1  returnansif__name__=="__main__":  arg=sys.argv[1]  print(type(arg))  b=print_num(int(arg))  print(b)调用1b=pyrunfile("num.py1","b");格式二12%返回值的out_vulue=pyrunfile("fun.py","var_nam",arg1=v1,arg2=v2)例子1234567891011#num.pydefprint_num(num=1):  ans=num+1  returnansif__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的各种方法的文章就介绍到这了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-13 06:25 , Processed in 0.481703 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表