Hos*_*ein 53 python matlab visual-c++
是否可以在Python中运行MATLAB函数?我搜索互联网,我只能找到PyMat.坏的是编译版本只支持Python2.2,我使用的是2.6.所以我尝试下载源代码,所以我可以自己编译.但我无法编译它,VC++ express似乎没有必要的功能来编译它.有没有人有PC的编译版本?或任何替代PyMat?谢谢
Luk*_*kas 33
我知道这是一个老问题,已经得到了解答.但我正在寻找相同的东西(对于Mac),并发现有很多选项可以使用不同的方法与matlab进行交互,并且有不同的成熟度.这是我发现的:
Matlab的低级接口,使用matlab引擎(libeng)进行通信(基本上是matlab附带的库).该模块必须编译并与libeng链接.
http://pymat.sourceforge.net
最后更新时间:2003年
这是一个有点短暂的pymat发展延续.似乎可以在Windows(包括64位),linux和mac上工作(有一些变化).
https://code.google.com/p/pymat2/
上次更新时间:2012年
高级接口,也作为需要编译和链接的模块 libeng.它将Matlab函数暴露给python,因此你可以做一些有趣的事情
mlab.plot(x, y, 'o')
http://mlabwrap.sourceforge.net
最后更新时间:2009年
mlabwrap的重新包装工作.基本上,它取代了的C++代码,对"libeng"在链接mlabwrap用蟒模块(matlabpipe即通过管道用MATLAB通信).这样做的主要优点是它不需要任何类型的编译.
不幸的是,这个包目前有几个bug,而且似乎根本不适用于mac.我报告了其中一些但最终放弃了.此外,如果你必须进入源代码,准备好大量的诡计和一堆非常丑陋的黑客;-)如果这变得更加成熟,它可能是最好的选择之一.
https://github.com/ewiger/mlab
上次更新时间:2013年
一个更新的包(2010),它也与Matlab交互libeng.与其他软件包不同,这个软件包通过ctypes加载引擎库,因此无需编译.它并非没有缺陷,但仍在维护和我发现的(64位Mac特定)问题应该很容易修复.
(编辑2014-05-20:似乎这些问题已经在源代码中得到修复,因此0.2.4应该没问题)
http://pymatlab.sourceforge.net
最后更新:2014年
还是一个仍在积极维护的新包.通过某种套接字与Matlab进行通信.不幸的是,暴露的功能有点受限.我无法弄清楚如何调用一个将结构作为参数的函数.需要zmq,pyzmq和IPython,它们很容易安装.
http://arokem.github.io/python-matlab-bridge
最后更新:2014年
ars*_*ars 29
另一种选择是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)))
Run Code Online (Sandbox Code Playgroud)
Mar*_*ark 25
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'
Run Code Online (Sandbox Code Playgroud)
更多信息在这里
Max*_*erg 10
有一个python-matlab桥,它在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']
Run Code Online (Sandbox Code Playgroud)
yourfunc.m的内容将是这样的:
%% MATLAB
function lol = yourfunc(args)
arg1 = args.arg1;
arg2 = args.arg2;
lol = arg1 + arg2;
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41651 次 |
| 最近记录: |