Q:什麼是MATLAB引擎(Matlab engine)?
A:用C/C++程式去呼叫MATLAB主程式來做事情的工具。
Q:怎麼使用他?
A:執行一隻C/C++程式,程式內容就包含所有要做的事情。
Q:他是怎麼運作的?
A:
準備好C/C++的輸入用資料。
C/C++程式呼叫MATLAB引擎(類似開啟MATLAB)
發送或取得MATLAB命令列的東西(類似人工在命令窗控制)
發送或取得MATLAB變數內容(需要用MATLAB定義的C/C++變數類型)
C/C++程式關閉MATLAB引擎(類似關閉MATLAB)
繼續在C/C++中使用剛剛得到的輸出資料。
Q:怎麼產生這個C/C++程式?
A:
需求:
要有一個安裝好的MATLAB主程式被呼叫。
依照普通的C/C++程式撰寫並編譯,但是必須要學會如何使用Matlab engine,請參閱說明書。
困難點:以VS來說,要編寫引用MATLAB引擎的C/C++程式必須要確實的設定好許多參數,引用正確標頭檔,設定相依的靜態函式庫*.lib,準備相關的動態函式庫等等。因為Matlab並沒有特地用VS去示範細節,很多細節錯了找不太出來原因。
Q:優點?
A:
寫一邊的程式就可以同時控制C/C++程式與MATLAB,且可以交換資料。
理論上,不必人工去控制MATLAB,更有效率,速度更快。
理論上,可以最完整的使用所有MATLAB功能(人工開啟MATLAB可以做的大部分事情這個作法都可以做)。實際上有些還要確認,例如官方文件有提到save命令不支援MAT檔-v7.3的壓縮格式。
Q:缺點?
A:
很難寫,照著範例我搞很久都編不出來。
實際上使用了過多的MATLAB資源,效率並沒有太大提升。
錯誤訊息可能不容易解決。
執行起來並不是很美觀,好像只是弄個外掛去操作MATLAB。