从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,它们很容易安装。
有一个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函数。 看到这里和这里 。