官方文档链接:https://ww2.mathworks.cn/help/compiler_sdk/gs/create-a-python-application-with-matlab-code.html?searchHighlight=Create a Python Package&s_tid=doc_srchtitle#d120e3957
注:我使用的是32位python,所以下载的matlab位数和MCR的位数最好与之相对应,否则会出现编译成功,但执行失败的现象。
选择Python Package作为目标类型,同时添加想要打包的.m文件,在最下方,有一项"Files required for your library to run",是供用户添加相关的依赖文件(涉及到不同的.m间相互调用)
打包成功后,会在matlab工作路径下生成一个与Library Name同名的目录,选择for_redistribution_files_only的setup.py进行安装,安装命令:python setup.py install
这样我们就可以正常的导入它了。不过第一次调用函数前,需要进行初始化以加载MATLAB Runtime
import Main
a= Main.initialize()
......
a.terminate()
总结:MATLAB Runtime 是一套独立的共享库,可以执行已编译的 MATLAB 应用程序或组件。如果需要在目标机器(即未安装matlab环境的主机)导入编译好的库,则需安装版本和位数相对应的MATLAB Runtime。附MCR官网下载链接:
https://ww2.mathworks.cn/products/compiler/matlab-runtime.html
##附具体调用方法
假若您的matlab函数是这样的:
function y = makesqr(x)
y = magic(x);
而通过MCR生成的库叫MagicSquarePkg,那么调用方式是这样的:
import MagicSquarePkg
a = MagicSquarePkg.initialize()
b = a.makesqr(5) # 有时要以 matlab.double([5])的方式传参
a.terminate()
当参数数目过多时,需要加 nargout参数以指定输出参数的个数,如
import matlab.engine
eng = matlab.engine.start_matlab()
t = eng.gcd(100.0,80.0,nargout=3)
print(t)