我想從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