- 研究生项目
- 2023.3
一、前言
最近,在做一个信号分选的项目,已有代码matlab算法,但是项目要求用python调用分装,工程同时涉及到了matlab和python两种语言,不太想进行手工的统一(主要是不会,并且统一的过程太麻烦),这就涉及到如何将两种程序整合到一起进行使用,也就是在python中调用matlab函数。
二、现有环境介绍
目前电脑配置
系统:Window 11
Matlab:2022A
Python:在anaconda里,basse环境3.9
三、在python中安装matlab.engine
1.检查自己的matlab支持的python版
方法是找到matlab里自带的python的setup.py文件。一般是在matlab安装目录下的extern->engines->python。
matlab支持python的版本有2.7,3.7,3.8,3.9. 如果目前所用的python版本有符合要求的就直接用,如果没有就只能重新装一个符合版本的python了。
2、调整python环境并安装matlab.engine
选择在anaconda里创建一个虚拟环境,从安装适合版本的python开始教大家怎样安matlab.engine。这里用anaconda创建python虚拟环境的方法就不说了,网上一大堆。
如图所示,我创建了一个叫“formatlab“的虚拟环境,它安装的python版本是3.6。 在确定好python准备好后,进入这个python所在的环境,如果你们和我一样选择创建python虚拟环境就得让anaconda propmt进入到这个环境下,如果你的python就装在了window下,那么直接打开cmd就行。 让控制窗口进入到刚才说的matlab中存放setup文件的位置。
以我的电脑为例,先进入我的python环境:formatlab。我的setup文件在‘E:\CodeTools_AnZhuangJi\Matlab\extern\engines\python’,然后用cd指令进入setup文件所在的位置:输入
cd /d E:\CodeTools_AnZhuangJi\Matlab\extern\engines\python
python setup.py install
之后电脑会自动安装,中间会出很语句,只要不是红色的以Error开头的就不用管,最后会显示成功安装,最后可以在此环境下用pip list查看是否安装成功
如果不新建一个虚拟环境,可以直接的打开anaconda的控制版面,按照上述方法安装
如果不是C盘,>D: ,调整到D盘, 在cd 文件夹名字
即可
四、python调用matlab格式
首先把matlab文件,包括mat文件和.m运行文件全部拷进python
其中eng = matlab.engine.start_matlab()表示打开matalb进程,为运行.m文件做准备。(一定要包含的)
然后直接eng.你想调用的m文件函数就可以实现python调用m文件了
eng.quit()的意思是关闭matalb进程,彻底结束调用。(可用可不用)
import matlab
import matlab.engine
eng = matlab.engine.start_matlab()
返回值 = eng.所要调用的matlab函数文件(参数)
eng.quit()
解决matlab报错
手动添加 setting>python project>python interpreter 里面,搜索matlab,安装,最后在终端版面检查
解决matlab.engine 报错
如果MATLAB版本支持所使用的python版本,需要进行一下操作将MATLAB与python就行“绑定”
第一步:“win+R”输入“cmd”打开命令行:
第二步:将路径更改为MATLAB安装路径,即“setup.py”文件所在的路径:
第三步:打开我们的python环境
第四步:依次输入以下命令
python setup.py build --build-base="builddir" install
python setup.py install --prefix="installdir"
python setup.py build --build-base="builddir" install --prefix="installdir"
python setup.py install --user
再测试:import matlab.engine