MATLAB R2015b使用MATLAB Compiler Runtime生成Python库的方法

使用MCR将.m文件编译成自己的Python库

官方文档链接: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的位数最好与之相对应,否则会出现编译成功,但执行失败的现象。

  1. 在matlab主界面上方的应用栏,依次选择应用程序 -> Library Compiler
    MATLAB R2015b使用MATLAB Compiler Runtime生成Python库的方法_第1张图片

  2. 选择Python Package作为目标类型,同时添加想要打包的.m文件,在最下方,有一项"Files required for your library to run",是供用户添加相关的依赖文件(涉及到不同的.m间相互调用)
    MATLAB R2015b使用MATLAB Compiler Runtime生成Python库的方法_第2张图片

  3. 简单地填写这几项后,选择右上角的绿色Package箭头打包
    MATLAB R2015b使用MATLAB Compiler Runtime生成Python库的方法_第3张图片

  4. 打包成功后,会在matlab工作路径下生成一个与Library Name同名的目录,选择for_redistribution_files_only的setup.py进行安装,安装命令:python setup.py install

  5. 这样我们就可以正常的导入它了。不过第一次调用函数前,需要进行初始化以加载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)

你可能感兴趣的:(python,matlab)