|
前言在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的各种方法的文章就介绍到这了
|
|