首先,我們來說明如何以MATLAB編譯器來將一個MATLAB函式編譯成獨立應用程式(Stand-alone Application),此程式可以在沒有安裝 MATLAB 的電腦執行。所使用的指令是 mcc,格式如下:
mcc –m userFunc.m 其中 userFunc.m 是一個由使用者所設計的MATLAB函式,經由MATLAB編譯器的轉換後,可以產生 userFunc.exe(微軟視窗平台)或 userFunc(Unix/Linux平台)的可執行檔,你可以在沒有安裝 MATLAB 的其他電腦執行這些檔案。
讓我們來看一個簡單的範例。首先,我們先撰寫一個 MATLAB 函式myEigValue.m,此函式的輸入是一個方陣,並使用 MATLAB 的內建函數 eig 來計算此方陣的固有值,然後將此固有值列印出來,此函式的原始碼如下:
欲測試此範例,可以在MATLAB命令視窗輸入:
myEigValue(magic(5)); 即可在螢幕顯示一個 5X5 的魔術方陣所對應的固有值。
由於我們要將 myEigValue.m 轉換成 myEigValue.exe,所以有一些細節要特別小心:
- 因為MATLAB函式轉成執行檔後,於DOS環境下輸入的資料是以字串方式傳入(命令列參數),所以 myEigValue.m 必須先使用 eval 將輸入字串轉為方陣。
- myEigValue.m 必須使用 disp 結果印在螢幕上,以方便 myEigValue.exe 來印出同樣的結果。
接著,我們在MATLAB命令視窗下,先將工作目錄改變至 myEigValue.m 所在的目錄,然後使用下列命令來將 myEigValue.m 編譯成 myEigValue.exe,如下:
mcc –m myEigValue.m
大約經過半分鐘的時間,就會完成編譯,並產生數個檔案,包含 一個可執行檔 myEigValue.exe。若要測試此可執行檔,可以直接在 DOS 命令視窗下輸入:
myEigValue.exe magic(5) 即可在螢幕顯示一個 5X5 的魔術方陣所對應的固有值。若要輸入一個特定的方陣,可以使用類雙引號來包住代表方陣的字串,範例如下:
myEigValue.exe "[1 2 3; 3 2 1; 1 1 1]" 我們可以將上述流程整理成一個單一的範例:
在上述範例中,我們多做了幾件事,來讓整個檔案目錄結構乾淨一些:
- 如果輸出目錄 myEigValue 不存在,我們先建立這個目錄。
- 在 mcc 指令中使用「-d myEigValue」以指定輸出目錄,所有的輸出檔案(包含最後的可執行檔案)都會被存放在此目錄中。
在使用 mcc 時,還有幾點要注意:
- 如果你的 MATLAB 函式有呼叫任何你自己定義的函式,要一併放進來編譯,例如「mcc –m main.m func.m」,其中 main.m 會呼叫到 func.m。
- 你也可以直接在 DOS 命令視窗或是 UNIX 的命令列下達 mcc 指令,若以 windows 平台為例,此時將會呼叫下列位置的 mcc:
{matlabroot}\bin\mcc.bat - 如果要檢視MATLAB編譯器在編譯時所產生的訊息,可以使用「mcc –mv myEigValue.m」(v 代表 verbose)。
由此方式所編譯出來的可執行檔,若要在沒有安裝 MATLAB 的機器執行,還必須多一道手續來安裝 MATLAB 相關的函式庫,安裝檔的位置如下(以 64-bit Windows 平台為例):
{matlabroot}\toolbox\compiler\deploy\win64\MCRInstaller.exe 此安裝檔只需執行一次即可,相關詳細說明,可參見編譯過程中所產生的 readme.txt,或是直接在MATLAB輸入「mcrinstaller」(mcr代表MATLAB Compiler Runtime,用來存放會被用到的MATLAB程式庫),就可以得到相關資訊。
MATLAB程式設計:進階篇