从python调用MATLAB函数

是否有可能从Python内运行MATLAB函数? 我search互联网,我只能findPyMat。 不好的一面是编译版本只支持Python2.2,而我正在使用2.6。 所以我试图下载源代码,所以我可以自己编译它。 但是我不能编译它,VC ++ express似乎没有必要的function来编译它。 有没有人有PC的编译版本? 或PyMat的任何替代品? 谢谢

PyMat看起来已经被放弃了。

我假设你在Windows上,所以你总是可以做最简单的方法,并使用Matlab的COM接口:

>>> import win32com.client >>> h = win32com.client.Dispatch('matlab.application') >>> h.Execute ("plot([0 18], [7 23])") >>> h.Execute ("1+1") u'\nans =\n\n 2\n\n' 

更多信息在这里

另一种select是Mlabwrap

Mlabwrap是Matlab®桥的一个高级Python,让Matlab看起来像一个普通的Python库。

它适用于numpy数组。 来自主页的示例:

 >>> from mlabwrap import mlab; from numpy import * >>> xx = arange(-2*pi, 2*pi, 0.2) >>> mlab.surf(subtract.outer(sin(xx),cos(xx))) 

我知道这是一个古老的问题,已经得到了答复。 但是我正在寻找同样的东西(对于Mac),发现有不less与matlab交互方式和不同成熟度水平的select。 这是我发现的:

pymat

Matlab的一个低级接口,使用matlab引擎( libeng )进行通信(基本上是matlab自带的库)。 该模块必须编译并与libeng链接。

http://pymat.sourceforge.net
最后更新:2003年

pymat2

pymat发展的一个短暂延续。 似乎工作在Windows(包括64位),Linux和Mac(有一些变化)。

https://code.google.com/p/pymat2/
最后更新时间:2012

mlabwrap

一个高级的界面,也作为一个需要编译和链接到libeng的模块。 它将Matlab函数暴露给Python,所以你可以做一些有趣的事情

mlab.plot(x, y, 'o')

http://mlabwrap.sourceforge.net
最后更新:2009年

MLAB

重新包装mlabwrap的工作。 基本上,它取代了与mlabwrap中的'libeng'链接的c ++代码与一个通过pipe道与matlab通信的python模块( matlabpipe )。 这样做的主要优点是不需要编译。

不幸的是,该软件包目前有一些错误,似乎并没有在Mac的工作。 我报告了其中的一些,但最终放弃了。 另外,如果你不得不进入源代码,准备大量的诡计和一堆非常丑陋的黑客;如果这变得更成熟,它可能是最好的select之一。

https://github.com/ewiger/mlab
最后更新:2013

pymatlab

一个更新的包(2010),也可以通过libeng与Matlab进行libeng 。 与其他软件包不同,它通过ctypes加载引擎库,因此不需要编译。 它不是没有缺陷,但仍然保持和我发现的(64位Mac特定的)问题应该很容易解决。
编辑2014-05-20 :看来这些问题已经在源代码中解决了,所以在0.2.4下应该可以的)

http://pymatlab.sourceforge.net
最后更新:2014

python与Matlab桥

也是一个新的包仍然积极维护。 通过某种套接字与Matlab进行通信。 不幸的是,暴露的function是有限的。 我无法弄清楚如何调用一个以结构体为参数的函数。 需要zmq,pyzmq和IPython,它们很容易安装。

http://arokem.github.io/python-matlab-bridge
最后更新:2014

有一个python-matlab桥梁,它在后台运行的意义上是独一无二的,所以每次调用Matlab函数时都没有启动成本。 https://github.com/jaderberg/python-matlab-bridge

这和下载和下面的代码一样简单:

 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 

看到这个页面: 一个开源的MATLAB®-to-Python®编译器

我想在Lukas的精彩总结中再增加一个选项:

matlab_wrapper

matlab_wrapper的优点是它是纯Python库,你不需要编译任何东西。 适用于GNU / Linux,Windows和OSX。

https://github.com/mrkrd/matlab_wrapper

免责声明:我是matlab_wrapper的作者

您可以通过安装Matlab使用官方的matlab引擎,然后从其extern文件构buildpython引擎。 您可以查看下面的指导网站:—感谢您在这个答案的第一个评论的build议—简要的基本步骤是(在Windows平台上,其他可以检查下面的url):1.下载然后安装matlab,版本必须是R2014或更高版本。 2.在admin下打开一个PowerShell窗口,然后:

 cd "matlabroot\extern\engines\python" 

3.使用下面的命令行来安装:

 python setup.py install 

pipe理员是必不可less的,否则你将无法build立它。

欲了解更多信息,您可以点击下面的官方开始工作表: http : //cn.mathworks.com/help/matlab/matlab_external/install-the-matlab-engine-for-python.html

新版本的matlab似乎提供了一个模块,允许你从Python内调用matlab函数。 看到这里和这里 。