我想从mathematica中调用一个matlab函数。如何最好地做到这一点?如何从mathematica调用matlab函数?
我发现一个ancient post on Wolfram site描述了一种方法来做到这一点,这仍然是连接两者的方式?
我想从mathematica中调用一个matlab函数。如何最好地做到这一点?如何从mathematica调用matlab函数?
我发现一个ancient post on Wolfram site描述了一种方法来做到这一点,这仍然是连接两者的方式?
您可以使用mEngine。预编译的Windows MathLink可执行文件适用于Mathematica 8.在Windows上,您可能需要add MATLAB to the system path。
与NETLink方法相比,其优点是在Mathematica和MATLAB之间传输变量将如mGet["x"]
或mPut["x"]
一样简单。虽然这也可能与NETLink一样,但是mEngine的优势在于你不需要自己实现它(如果像我一样,你对COM或.NET一无所知,它是非常棒的)
我会想象这是一个普遍的难题,但可以通过针对特定情况的小编程轻松解决。我将用C#演示。
我会建立一个调用串,像这样。
总而言之,我可以在少于50行的C#代码中完成这个工作,以解决特定的问题。换句话说,没有太多的工作。可能存在的问题是数据转换,但是如果您想发送来回数组数据,MathLink提供了很多开箱即用的功能。同样,Mathematica可以通过Java连接到MATLAB,尽管我自己并没有这样做。
也许最简单的连接可以通过Python进行。 Mathematica提供了一个可安装的python库,位于Mathematica \ 8.0 \ SystemFiles \ Links \ NETLink,并且Matlab有一个名为PyMat的插件库,可以下载here,但是这个软件包并没有被长期保存时间和支持只有最古老的Matlabs。
或者,你可以放弃Matlab完全赞成SAGE和/或numpy。
您可以尝试NETLink
这至少在Windows下:
In[1]:= Needs["NETLink`"]
matlab = CreateCOMObject["matlab.application"]
Out[2]= «NETObject[COMInterface[MLApp.DIMLApp]]»
然后你就可以调用Matlab的功能:
In[4]:= [email protected]["version"]
Out[4]= "
ans =
7.9.0.529 (R2009b)
"
In[5]:= [email protected]["a=2"]
[email protected]["a*2"]
Out[5]= "
a =
2
"
Out[6]= "
ans =
4
"
HTH
+1我很想知道如何做到这一点,在Matlab中有些事情更容易,Mathematica中的一些事情更容易! – mor22 2010-12-22 16:16:50
约翰,你有没有尝试我在2013年5月发布的其他答案? – Szabolcs 2014-06-14 14:15:21