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