从python运行已编译的MATLAB

时间:2014-08-21 10:30:52

标签: python matlab

我有一些MATLAB脚本,例如:

function mat_foo(varargin)
    params.x = 'aaa';
    params = parse_input(params, varargin);
    disp(params.x);
end

parse_input是我的一个函数,可以转换varargin的数据并覆盖'params' struct的默认值。

我编译了这个函数,我想从python调用它,我按照以下方式执行:

subprocess.check_call(['$/mat_foo.app/Contents/MacOS/applauncher x bbb'], shell=True)

这会将params.x设置为'bbb'并且运作良好。

我的问题是,每次我想调用编译的MATLAB时,它都会初始化MCR并需要大约8-10秒。 我的问题是,是否有办法初始化MCR一次并快速使用它多次? 我在OSX上使用MATLAB R2013a和python 2.7.5

1 个答案:

答案 0 :(得分:2)

可以按照here所述在共享库中编译代码。您可以使用

在python中加载此库
mymatlab = cdll.LoadLibrary("mymatlab_library.so")

并通过调用函数

初始化并加载MCR
mymatlab.initializeMyLibrary()

可能无效或仅使用matlab的disp函数将文本打印到控制台。

对库的后续函数调用应立即执行。

另见Mathworks discussion