python调用matlab函数(测试版本:python3.6;matlabR2019a)
1.说明及matlab脚本安装
在日常的科研、学习中,经常会验证某些算法的实际效果,但是有时别人的一些验证算法是用matlab编写,而自己的程序则是使用python编写,这会给一些算法的比较方面带来问题,于是本篇博客为python调用matlab中的.m函数,并返回.m函数返回的系数矩阵。
Step 1.前提条件
1.需要调用的.m函数可以在matlab上成功运行
Step 2.为python环境安装matlab插件
步骤1:找到matlab安装路径下的该文件夹
在自己电脑按照实际情况找到extern-----engines------python路径下
步骤2:在该路径下进入cmd终端
在图中cmd的位置输入cmd,进入终端如下所示:
成功以后如下图所示:
Step 3.选择自己所要使用的python环境
我这里使用的anaconda配置的虚拟环境,我需要使用py361虚拟环境,所以就输入命令activate py361用于激活该环境。
Step 4.安装matlab脚本
在如上环境下输入命令python setup.py install
安装结果:
出现如上即表示安装成功了。
2.python程序如何调用matlab的.m函数并获得返回数据
1.包的引入
import matlab.engine
2.python调用matlab函数实际操作
#Step 1:首先启动matlab(非界面)
engine = matlab.engine.start_matlab()#启动matlab
#Step 2:将传入参数转为list,注意:matlab不接收numpy数组
filename = filename.tolist()
#STep 3:调用对应.m函数,并得到返回结果
gfccs = engine.getgfcc1(filename) #因为matlab没有numpy所以其返回的结果为list cell形式
gfccs = np.array(gfccs) # 所以再需要将其转为numpy形式的数组
#Step 4:后续操作
这里继续进行后续内容的开发即可,~~
注意事项
1.上边的engine.getgfcc1()命令是具体的调用matlab函数命令,其中getgfcc1()函数为对应的getgfcc1.m文件,filename为传入的文件名
2.matlab的getgfcc1.m文件和对应的python文件在同一个文件路径下
3.如果调用的函数内又调用了其他的函数,建议将其他函数也一并放在getgfcc1.m的函数内容后边,如下所示:
建议
有时matlab函数其输入的参数很复杂,可能也会出现其他传入参数的错误,这里写一下我自己在摸索过程中的建议吧:
1.如果传入参数过多导致某些参数在python中传入matlab报错,建议手动修改对应的.m文件,尽量减少参数的传入,比如我这里之前getgfcc1.m需要传入较多参数,后来经过手动修改,现在只需要输入一个文件名字即可了。