如何从Python与MATLAB交互?

时间:2010-02-13 00:12:37

标签: python matlab ctypes

一位朋友问我创建一个接受一些输入的小型Web界面,将它们发送到MATLAB进行数字运算并输出结果。我是一名Python / Django开发人员,因此我可以处理Web界面,但是当谈到MATLAB时我很无能为力。具体做法是:

  • 真的喜欢避免在Windows服务器上托管此内容。使用在Windows上创建的脚本在Linux中运行MATLAB的任何问题?
  • 我是否应该考虑炮轰命令或将其编译为C并使用ctypes与之交互?
  • 如果要编译是要走的路,有什么我应该知道的有关编译和使用Python的东西吗? (自从我编译或使用C以来已经很长时间了)

关于如何解决此问题的任何建议,提示或技巧?

5 个答案:

答案 0 :(得分:16)

有一个python-matlab bridge在Matlab作为服务器在后台运行的意义上是独一无二的,因此每次调用Matlab函数时都没有启动成本。

就像下载和以下代码一样简单:

from pymatbridge import Matlab
mlab = Matlab(matlab='/Applications/MATLAB_R2011a.app/bin/matlab')
mlab.start()
res = mlab.run('path/to/yourfunc.m', {'arg1': 3, 'arg2': 5})
print res['result']

你的func.m的内容是这样的:

%% MATLAB
function lol = yourfunc(args)
    arg1 = args.arg1;
    arg2 = args.arg2;
    lol = arg1 + arg2;
end

答案 1 :(得分:13)

查看mlabwrap,它允许您通过python API调用Matlab

答案 2 :(得分:6)

作为替代方案,从Matlab R2014b开始,提供了一个Python库,使用MATLAB Engine API for Python从Python调用Matlab。

答案 3 :(得分:1)

关于操作系统兼容性,如果您使用Linux的matlab版本,则在Windows中编写的脚本应该无需任何更改即可运行。 如果可能的话,你也可以考虑用python做一切的可能性。 Matplotlib的Scipy / numpy提供了完整的Matlab替换。

答案 4 :(得分:-1)

也许你会在这里找到有用的信息

PyMat - An interface between Python and MATLAB