如何在Python中与MATLAB交互?

24 投票
4 回答
23909 浏览
提问于 2025-04-15 19:13

有个朋友问我怎么做一个小的网页界面,可以接受一些输入,然后把这些输入发送到MATLAB进行计算,最后输出结果。我是个Python/Django开发者,所以网页界面我能搞定,但对MATLAB就一头雾水。具体来说:

  • 真的不想把这个放在Windows服务器上。请问在Linux上运行MATLAB会不会有问题,尤其是那些在Windows上写的脚本?
  • 我应该考虑用命令行的方式来执行,还是把它编译成C语言,然后用ctypes来和它互动呢?
  • 如果选择编译的话,有什么需要注意的地方吗?比如怎么把它编译好并在Python中使用?(我已经很久没碰过编译或C语言了)

有没有什么建议、技巧或者窍门可以帮我实现这个目标?

4 个回答

6

从Matlab R2014b版本开始,提供了一种新的方法,可以通过一个Python库来调用Matlab。这是通过使用MATLAB Engine API for Python实现的。

13

你可以看看 mlabwrap,这个工具可以让你通过Python来调用Matlab。

18

有一个叫做 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']

你在 yourfunc.m 文件里的内容可以写成这样:

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

撰写回答