首先需要下载与python版本对应的matlab,并成功执行matlab中的setup.py文件
参考流程如下
https://blog.csdn.net/s1k9y9/article/details/127793053
完成上述步骤即可开始实现动态调用matlab文件。
文件目录如下
D://call/
|–matlab
|–test1
|–main.m
|–test2
|–main.m
|–callMatlabFunc.py
test1/mian.m 内容如下
% 实现积分计算
function Norm1 = Norm_cal(R, dt)Norm1=cumtrapz(R)*dt
end
callMatlabFunc.py 内容如下
import matlab
import matlab.engine# @param funcname 访问文件路径
# @param params 参数集
def callMatlabFunc(funcname, params):try:eng.cd('./matlab/' + funcname) # 进入matlab文件目录val = eng.main(*params) # matlab文件全部以main命名,以文件夹名称做区分eng.quit()return valexcept Exception as e:return eif __name__ == '__main__':print(callMatlabFunc('test1', (matlab.double([0,1,2,3,4,5,6,7,8,9,10]), 1.0)))# 传入参数代表求x的0-10定积分# python传入matlab数组需要用matlab.double转换一下# Norm1 =0 0.5000 2.0000 4.5000 8.0000 12.5000 18.0000 24.5000 32.0000 40.5000 50.0000
这样通过更改funcname变量,使执行的matlab文件可以动态更改。