首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从mathematica中调用matlab函数?

如何从mathematica中调用matlab函数?
EN

Stack Overflow用户
提问于 2010-12-22 23:38:04
回答 4查看 2.9K关注 0票数 6

我想从mathematica中调用一个matlab函数。怎样做才是最好的呢?

我找到了一个ancient post on Wolfram site,它描述了这样做的一种方式,这仍然是连接两者的方式吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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一无所知,那就太好了)。

票数 2
EN

Stack Overflow用户

发布于 2011-02-02 12:29:45

至少在Windows下可以尝试使用NETLink

代码语言:javascript
复制
In[1]:= Needs["NETLink`"]
matlab = CreateCOMObject["matlab.application"]

Out[2]= «NETObject[COMInterface[MLApp.DIMLApp]]»

然后你就可以调用Matlab函数了:

代码语言:javascript
复制
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

票数 6
EN

Stack Overflow用户

发布于 2011-01-29 18:41:44

我认为这通常是一个困难的问题,但对于特定的情况,通过一些编程可以很容易地解决。我将使用C#进行演示。

我会构建一串调用,如下所示。

  • Mathematica通过MathLink调用C#程序。这几乎是很容易设置的,而且Mathematica有一个样例项目,它位于Mathematica\8.0\SystemFiles\Links\NETLink目录下。
  • C#程序调用Matlab.有几种方法可以进行此调用,this handy link介绍了如何进行调用,并提供了示例代码。
  • C#程序返回Matlab结果。

总而言之,对于一个特定的问题,我可以用不到50行的C#代码来完成这项工作。换句话说,没有太多的工作。可能的问题是数据转换,但是如果您想来回发送数据数组,MathLink提供了很多开箱即用的功能。同样,Mathematica可以通过Java链接到MATLAB,尽管我自己还没有做到这一点。

也许最简单的连接可以通过Python实现。Mathematica提供了一个可安装的Matlabs库,位于Mathematica8.0\SystemFiles\Links\NETLink,而MathLink有一个名为PyMat的附加库,可以从here下载,但这个包维护时间不长,只支持最古老的Matlab。

或者,您可以完全放弃Matlab,转而使用SAGE和/或numpy。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4510770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档