本文根據網上零散的信息以及這三款軟件自帶的說明文檔整理而成,為備忘而記錄。記錄了Matlab和Maple之間的相互調用,以及Matlab和Mathematica之間相互調用的安裝配置方法。
為何需要互操作???????? 數值計算和圖形方面Matlab毫無疑問是最強的,但其符號演算方面就比較弱。
符號運算方面Maple和Mathematica各有千秋。我個人感受:就符號運算本身而言,Mathematica應該比Maple更強,但軟件自帶工具包的豐富程度,Maple比Mathematica更豐富。此外,Mathematica本身的數值計算能力總體上還是比Maple更強,而Maple的易用性比Mathematica更強。
由上面的優缺點對比,就存在可能會同時使用兩款以上的軟件,也就存在互操作問題。
本文成功配置的參考環境:??????? Win7-x86+Matlab2011a+Mathematica8+Maple15+Microsoft Visual Studio 2010
一)在Matlab環境中調用Maple1)確認Matlab和Maple都已經安裝。
2)?確認設置環境變量:MATLAB_SYMBOLIC=Maple
3)?安裝Maple Toobox for Matlab可以在Maple15安裝目錄下找到:MapleToolbox.bat 。 運行依向導運行之,并且依次按提示選擇Maple和Matlab的安裝目錄。
4)啟動Matlab 并執行命令:toolbox_version,驗證Maple工具箱是否安裝成功
如果成功,該命令返回: toolbox_version=maple
5)確保Matlab真的會使用Maple符號計算引擎
在Matlab命令行中輸入: pathtool , 執行之會彈出一個對話框,下拉到最后,選中最后兩個,然后點擊左邊的”Move to Top“(移動到頂端)按鈕,然后選擇保存。exit退出matlab,現在設置好了。
6)重啟Matlab,驗證之:maple(‘discrim(a*x^2+b*x+c,x)’)
int(‘atan(x)/x^(3/2)’,0,1)
syms x
maple(‘solve(x^2*exp(x)-10,x)’)
maple(‘plot(exp(x)*x^2-1, x = -5 .. .5)’)
如果能正確地返回結果,則表明安裝配置成功.
二)在Maple環境中調用Matlab1)確認Matlab和Maple都已經安裝。
2)確認已將%MATLAB%\bin;%MATLAB%\bin\win32添加到PATH的環境變量中,其中%MATLAB%就是Matlab的安裝路徑。
3)重新啟動Maple,執行如下代碼看是否正常
Matlab[setvar]("x",3.14);
Matlab[getvar]("x");
如果能正確地返回結果,則表明安裝配置成功.
另:我們可以注意到,隨著這個的代碼的執行,會自動打開一個Matlab命令行窗口。
如果你愿意的話,可以在這個窗口中輸入:x 。查看其結果,看看是否和Maple中的結果一致。
你可以手工啟動這個Matlab命令行窗口:?? Matlab[openlink]();
你可以通過Matlab[closelink](); 來關閉這個Matlab命令窗口。
三)在Matlab中調用Mathematica1)確認Matlab和Mathematica都已經安裝,并且為了編譯源代碼還要求安裝Microsoft Visual Studio
2)確認已將Mathematica的安裝目錄添加到PATH的環境變量中。
3)下載Mathematica Symbolic Toolbox for MATLAB – Version 2.0???????http://library.wolfram.com/infocenter/MathSource/5344/
并將其中的math.zip\mathematica_for_matlab\math_windows.zip\的文件解包到%MATLAB%\toolbox\mathematica目錄下,并且刪除其中math.dll(因為這個文件太老,可能不適用于當前版本)
4)確定Mathematica中mathlink.h所在的目錄,以及ml32i1m.lib所在的目錄,比如,對我的系統而言在:
D:\Program\Mathematica\8.0\SystemFiles\Links\MathLink\DeveloperKit\Windows\CompilerAdditions\mldev32\include
D:\Program\Mathematica\8.0\SystemFiles\Links\MathLink\DeveloperKit\Windows\CompilerAdditions\mldev32\lib
將這兩個文件復制到%MATLAB%\toolbox\mathematica中 .
修改mathrun.m,將C:\XXX 替換為%MATLAB%\toolbox\mathematica的全路徑目錄
5)確認Microsoft Visual Studio作為默認編譯器:
打開Matlab命令行,執行mex –setup?選擇Microsoft Visual Studio作為默認編譯器。(建議設置好后退出Matlab)
6)再次打開Matlab命令行,將當前目錄切換到%MATLAB%\toolbox\mathematica, 然后運行mathrun.m?? ,這個程序將會編譯math.c
如果編譯成功,確認%MATLAB%\toolbox\mathematica 已被添加到Matlab的Path路徑中。
最后運行在Matlab環境下運行測試代碼: testscript.m 確認是否配置成功.
另:使用方法直接可參見testscript.m的代碼.
四)在Mathematica中調用Matlab1)確認Matlab和Mathematica都已經安裝,并且為了編譯源代碼還要求安裝Microsoft Visual Studio
2)下載 mEngine
http://library.wolfram.com/infocenter/MathSource/4821/
將壓縮包mEngine.zip\mEngine\mEngineSource中的的文件復制到 D:\Program\Mathematica\8.0\AddOns\Applications\matlab
將壓縮包mEngine.zip\mEngine中的的文件mEngine.m和mEngine.nb也復制到 D:\Program\Mathematica\8.0\AddOns\Applications\matlab
3)確認已將%MATLAB%\bin;%MATLAB%\bin\win32添加到PATH的環境變量中,其中%MATLAB%就是Matlab的安裝路徑。
4)打開Microsoft Visual Studio命令行環境,切換目錄cd D:\Program\Mathematica\8.0\AddOns\Applications\matlab5)在Microsoft Visual Studio命令行環境中,設置臨時的編譯環境(包括MathLink開發環境和Matlab開發環境)SET MATHLINK=D:\Program\Mathematica\8.0\SystemFiles\Links\MathLink\DeveloperKit\Windows\CompilerAdditions\mldev32
SET MATENGINE=D:\Program\MATLAB\R2011a\extern
SET PATH=%PATH%;%MATHLINK%\bin\
SET INCLUDE=%INCLUDE%;%MATHLINK%\include\;%MATENGINE%\include\
SET LIB=%LIB%;%MATHLINK%\lib\;%MATENGINE%\lib\win32\microsoft6)在Microsoft Visual Studio命令行環境中,設置編譯參數SET CL=/nologo /c /DWIN32 /D_WINDOWS /W3 /O2 /DNDEBUG
SET LINK=/NOLOGO /SUBSYSTEM:windows /INCREMENTAL:no /PDB:NONE kernel32.lib user32.lib gdi32.lib7)在Microsoft Visual Studio命令行環境中,?編譯生成mEngine.exeMPREP template.tm -o templatetm.c
CL *.c
LINK *.obj ml32i3m.lib? libeng.lib libmx.lib /OUT:mEngine.exe8)設置mEngine的Mathematica的搜索路徑:
在Mathematica中查看$BaseDirectory的值。(我系統中其值為 C:\ProgramData\Mathematica)
然后在$BaseDirectory\Kernel\init.m中添加一行代碼, 保存,重啟Mathematica .AppendTo[$Path,ToFileName[{$InstallationDirectory,"AddOns","Applications","matlab"}]]9)參考mEngine.nb學習其用法且驗證安裝是否成功.
另:使用前的加載方法:??<< mEngine`