前文僅介紹簡單範例,關鍵知識 (函數輸入輸出格式、工具箱呼叫、編譯器用法、混合使用等) 將於後續文章說明。本文概述 VC 呼叫 MATLAB 的常用方法,建立整體認知。
MATLAB 為後台伺服器,C 程式為前台客戶端,透過 Windows 動態資料交換 (DDE) 通訊。幾乎可使用 MATLAB 所有功能,但需安裝 MATLAB、執行效率低、部署不便,適合個人使用或示範,不適合商業軟體發布。
MATLAB 提供大量 C/C++ 重寫的數學函數 (線性代數、數值分析、傅立葉、多項式、微分方程、矩陣運算等)。優點:彈性高、不依賴 MATLAB 執行環境;缺點:需熟悉 C/C++,呼叫工具箱函數困難。適合精通 C/C++ 的開發者。
將 .m 檔轉為 C/C++ 程式碼,再由 C/C++ 編譯器建置為獨立應用程式。生成過程中產生的 C/C++ 檔原則上可被其他程式碼呼叫。編譯器可依選項產生 DLL、C/C++ 檔、可執行檔等。限制 (R21.1 以前):無法轉換腳本檔、不支援 MATLAB 物件、無法用 input/eval 操作工作區變數、無法動態命名變數、無法處理巢狀呼叫其他 .m 檔、無法使用內聯函數。
將 MATLAB 程式封裝為 COM 元件,供其他語言呼叫。實作簡單、通用性強、幾乎可使用所有 MATLAB 函數 (不支援腳本檔,需改為函數檔)。程式較大、呼叫工具箱或函數較多時推薦使用,也是 MathWorks 官方推薦方式。
體積小 (~8 MB),可將 .m 腳本/函數轉為同功能 C/C++ 檔,支援生成 DLL/EXE、巢狀腳本、環境設定後可用工具箱。缺點:對 struct/class 支援不全、部分繪圖 (特別是 3D) 無法正確實現。適合不涉及 3D 繪圖、.m 檔不大的專案。