Python调用matlab函数
环境:MATLAB R2022a、Anaconda、python3.9
检验配置
检查Python版本是否与Matlab版本相匹配
安装API
打开matlab在命令行中输入 matlabroot 获得matlab的根目录,如图。
以管理员的身份打开cmd,并进入到matlabroot目录下,接着进入extern->engines-> python,最中到达python文件夹下。完整命令如下:
到达该问价夹后,根据需要切换到conda环境下,如果没有conda可以跳过,matlab的API需要根据python的版本进行编译,我使用的是conda 的虚拟环境,而且与base环境内的python版本不一致所以在此处切换了python环境,环境切换后,运行
python setup.py install
python setup.py build --build-base="builddir" install
此时文件夹下会生成 builddir 目录,进入该文件夹下的lib目录可以看到编译好的matlab包,将这个包放入anaconda对应虚拟环境下的 环境名\Lib\site-packages下即可
测试
测试主要使用了自己编写的test.m程序作为测试函数
测试程序代码如下:
import matlab.engine
import matlab
eng = matlab.engine.start_matlab()
# 此地址为test.m文件存放的地址
eng.cd('C:/Users/Username/Documents/Python Scripts/stft_first_test_linux')
c = eng.test(1,2)
print(c)
最后
在matlab的官方教程中介绍了另一种通过将生成文件放在特定文件夹,并添加环境变量的方法来调用matlab包,测试之后发现只有电脑默认的python可以调用,当更换成conda下的虚拟环境时无法使用,所以自作聪明的将matlab包直接复制到了虚拟环境的包里面,没想到可以使用了。