最近在折腾MATLAB和python联合编程,初衷是希望用python训练深度学习算法,用MATLAB里面的一些模型。虽然MATLAB里面已经有了一些机器学习和深度学习相关的工具箱了,但是目前训练深度学习算法用tensorflow和pytorch这样的开源软件才是主流。参考:Python和matlab混编时,遇到问题:ImportError: No module named matlab.engine"的解决方法
先把这个过程记录下来,与大家一起交流学习。
第一步:安装用于 Python 的 MATLAB 引擎 API
这部分在mathworks官方文档都有,我使用的是2020a版本,支持py版本 2.7、3.6 和 3.7。安装可以参考网上其他一些文章,大概就是在matlab软件安装路径下,找到文件目录“./extern/engines/python”,win+r打开cmd,在当前路径下依次执行如下命令行:
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
这样就不会出现常见的 ImportError: No module named matlab.engine 问题了,最后使用下面的代码验证是否安装成功。
import matlab.engine
from numpy import *
if __name__ == '__main__':
eng = matlab.engine.start_matlab('MATLAB_R2016b')
A = matlab.double([[1,2],[5,6]])
print(type(A),A.size,A)
print(eng.eig(A))
eng.quit()
pass
第二步:调用
import matlab.engine
eng = matlab.engine.start_matlab() #运行
eng.quit() #停止