我想从mathematica中调用一个matlab函数。怎样做才是最好的呢?
我找到了一个ancient post on Wolfram site,它描述了这样做的一种方式,这仍然是连接两者的方式吗?
发布于 2011-12-14 21:17:11
您可以使用mEngine。预编译的Windows MathLink可执行文件适用于Mathematica 8。在Windows上,您可能需要add MATLAB to the system path。
与NETLink方法相比,这种方法的优点是,在Mathematica和MATLAB之间传递变量将像mGet["x"]或mPut["x"]一样容易。尽管使用NETLink也可以做到这一点,但mEngine的优点是您不需要自己实现它(如果您像我一样对COM或.NET一无所知,那就太好了)。
发布于 2011-02-02 12:29:45
至少在Windows下可以尝试使用NETLink:
In[1]:= Needs["NETLink`"]
matlab = CreateCOMObject["matlab.application"]
Out[2]= «NETObject[COMInterface[MLApp.DIMLApp]]»然后你就可以调用Matlab函数了:
In[4]:= matlab@Execute["version"]
Out[4]= "
ans =
7.9.0.529 (R2009b)
"
In[5]:= matlab@Execute["a=2"]
matlab@Execute["a*2"]
Out[5]= "
a =
2
"
Out[6]= "
ans =
4
"HTH
发布于 2011-01-29 18:41:44
我认为这通常是一个困难的问题,但对于特定的情况,通过一些编程可以很容易地解决。我将使用C#进行演示。
我会构建一串调用,如下所示。
总而言之,对于一个特定的问题,我可以用不到50行的C#代码来完成这项工作。换句话说,没有太多的工作。可能的问题是数据转换,但是如果您想来回发送数据数组,MathLink提供了很多开箱即用的功能。同样,Mathematica可以通过Java链接到MATLAB,尽管我自己还没有做到这一点。
也许最简单的连接可以通过Python实现。Mathematica提供了一个可安装的Matlabs库,位于Mathematica8.0\SystemFiles\Links\NETLink,而MathLink有一个名为PyMat的附加库,可以从here下载,但这个包维护时间不长,只支持最古老的Matlab。
或者,您可以完全放弃Matlab,转而使用SAGE和/或numpy。
https://stackoverflow.com/questions/4510770
复制相似问题