MATLAB實現整合系列第二期:Compiler

Fred Liu
Jul 11, 2023

--

在這篇中我們會來討論一下,如何使用MATLAB Compiler來進行封裝我們的MATLAB程式碼,以及有什麼好處還有詳細流程怎麼做。

在這次的主題中,我們會討論以下中間的這條路,MATLAB Compiler。

MATLAB Compiler的功能

在Compiler最主要的功能就是將MATLAB Code封裝成Standalone Applications,並且可以在三大OS(Windows,Linux,Mac)的環境中進行。

變成獨立應用程式後,在使用者端只需要下載MATLAB Runtime就可以執行此檔案,也就是說只要有MATLAB Compilerl工具箱的授權就可以無限地轉出執行檔來做使用,因為Runtime是免費下載使用的。

MATLAB Runtime的網址:
https://www.mathworks.com/products/compiler/matlab-runtime.html

那還有另一個功能,就是將我們MATLAB APP Designer中設計的APP(使用者介面)進行封裝,讓使用者可以直接使用被封裝好的APP功能,變成是獨立的使用者介面應用程式。

如果要更進階的話也可以封裝成Docker Containers,在Docker中做使用,或是可以將Tall Arrays 部屬出去成Spark Applications在 Hadoop Cluster

Deploy Tall Arrays to a Spark Enabled Hadoop Cluster :
https://www.mathworks.com/help/compiler/deploy-tall-arrays-to-a-spark-enabled-hadoop-cluster.html

MATLAB Compiler的支援限制

根據於不同的工具箱功能,在使用MATLAB Compiler上的限制是小的,通常是一些內建的APP與一些I/O相關的功能無法使用,但在MATLAB中還是有詳細的列表,在封裝之前先看一下列表有什麼的限制與內容吧。

Support for MATLAB, Simulink, and Toolboxes
https://www.mathworks.com/products/compiler/compiler_support.html

MATLAB Compiler的操作流程

在這邊會有兩種使用方式,一種是使用程式碼的方式進行,另一種則是使用APP的方式進行,但由於在操作的便利性這邊會介紹使用APP的方式進行,也是我非常推薦的方式。

首先在MATLAB的主頁面上方就可以看到有個APPS的頁籤

點最右邊的有一個向下的按鈕後可以展開我們全部的APP,並且找到以下這個欄位,最左邊的就是我們會使用到的Application Compiler,

點開Application Compiler後,就可以展開這個APP,會有以下的畫面。

加入了Main File後,接著來看一下有哪些內容可以設定。

Application information
這裡可以添加一些資訊在執行檔內,並且可以透過客製化目前的圖示。

Suggested Support Package
在新版本(可能是2022a or 2022b之後),會根據目前程式碼使用到的Support Pakages去做抓取,避免有一些程式包沒有抓到,這邊也可以去勾選目前真正會使用到的內容。

Command line input type options
這邊可以設定到時候輸入的inputs會是怎樣的變數型態。

另外還有一半的設定內容可以做調整。

Additinal installer options
如果有別的需要額外添加的內容,可以在這邊手動作加入。

Files required for your application to run
這邊會列出執行這個程式應用會需要的檔案,可手動添加。

Files installed for your end user
這是之後生成出來的檔案,也可以手動添加。

Additional runtime settings
這邊會有兩個選項,第一個選項預設會是打勾,就是會有一些錯誤訊息會出現在Windows Command上,在嘗試部屬或是除錯階段,會建議大家可以先開啟此功能。

第二個功能是可以寫出log檔,也如同上述所說,可以在除錯階段先做開啟,方便做一些更改。

在最後的階段,來看一下Settings裡面的選項吧。
完成設定後就可以選擇Package進行打包了

在設定內的話可以針對一些路徑做設定。

打包完後看到此畫面(三個打勾)就知道已經成功了,並且可以檢視一下輸出的檔案,會有三個資料夾

要發佈出去做部屬的話,就可以選擇中間這項for_redistribution_files_only,將整包檔案搬出去就可以了

裡面會有的檔案就是這些,可以先透過readme.txt了解完整的應用方式,
其實也就是提醒你要記得裝runtime,不然是無法啟動成功的哦。

--

--