在python中调用matlab函数推荐使用matlab engine,这是官方推荐的调用方式,并给出了丰富的支持和帮助,能够便于开发者快速入门。
安装matlab engine的方法网上比较多,也比较简单,需要注意的就是matlab的版本和python的版本,最初我的matlab版本是R2016a,python版本是3.7.7,虽然这个版本的matlab提供了安装matlab engine的.py文件,但是经过多次尝试仍然不能正确安装。最终无奈将matlab版本升级至R2020a,再进行安装,问题解决。
安装了之后,为了测验matlab engine是否安装成功,可以使用几行简单的代码进行测试:
习惯使用了matlab的同学可能会需要在python调用的前提下对matlab程序进行进一步的调试。那么使用上述的开启matlab engine的方式就不能满足我们调试的需求。
使用上述的方法开启一个matlab engine,相当于打开了一个matlab线程。我们可以通过将python连接至现有的matlab会话,来实现函数调用,同时,在matlab源代码中设置的断点也会在该函数被python调用时生效,从而便于调试。
import matlab.engine
eng = matlab.engine.connect_matlab()
tf = eng.isprime(37) #判断‘37’是否为质数
print(tf)
具体将python连接至现有的matlab会话可以参考以下的官方帮助:
https://ww2.mathworks.cn/help/matlab/matlab_external/connect-python-to-running-matlab-session.html