MATLAB程序編譯PPT課件_第1頁
MATLAB程序編譯PPT課件_第2頁
MATLAB程序編譯PPT課件_第3頁
MATLAB程序編譯PPT課件_第4頁
MATLAB程序編譯PPT課件_第5頁
已閱讀5頁,還剩113頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

2020 4 20 合肥工業(yè)大學(xué)機(jī)械與汽車工程學(xué)院 MATLAB程序編譯 山東省科學(xué)院計(jì)算中心劉煥進(jìn)E mail liuhuanjinliu 1 2020 4 20 MATLAB編譯器的工作機(jī)理MATLAB編譯器的安裝與配置編譯部署典型案例介紹 本章的主要內(nèi)容包括 2 2020 4 20 第一節(jié)MATLAB編譯器的工作機(jī)理 3 2020 4 20 MATLAB編譯器產(chǎn)品簡介 MATLAB編譯器的功能 幾個(gè)要點(diǎn) 關(guān)于MATLAB編譯器產(chǎn)生的應(yīng)用程序或運(yùn)行庫 關(guān)于打包器 wrapper 文件 組件技術(shù)文件 CTF 本節(jié)的主要內(nèi)容包括 4 2020 4 20 MATLAB編譯器產(chǎn)品是MATLAB應(yīng)用程序集成與發(fā)布的一種重要工具 它是一個(gè)運(yùn)行于MATLAB環(huán)境的獨(dú)立工具 MATLAB編譯器可以將M文件 MEX文件 MATLAB對(duì)象或其它MATLAB代碼轉(zhuǎn)換為C C 代碼 然后再調(diào)用外部C C 編譯器把產(chǎn)生的源代碼編譯 鏈接成獨(dú)立的應(yīng)用程序 庫 COM對(duì)象以及Excel插件 MATLAB編譯器產(chǎn)品簡介 5 2020 4 20 1 將M文件編譯成為可以在UNIX Windows和Macintosh操作系統(tǒng)上獨(dú)立運(yùn)行的應(yīng)用程序 獨(dú)立運(yùn)行的應(yīng)用程序就是在其運(yùn)行過程中可以不需要MATLAB軟件的同時(shí)運(yùn)行 此外 也可以在沒有安裝MATLAB軟件的計(jì)算機(jī)上運(yùn)行這些應(yīng)用程序 2 將M文件編譯成為C和C 共享函數(shù)庫 在Windows系統(tǒng)上應(yīng)用的動(dòng)態(tài)鏈接庫DLLs Linux和UNIX系統(tǒng)下為共享的庫文件 MATLAB編譯器的功能 6 2020 4 20 3 MATLABBuilderEX可以將MATLAB函數(shù)打包 以便MicrosoftExcel用戶可以通過VBA在Excel程序中訪問這些函數(shù) 4 MATLABBuilderJA可以將MATLAB中的M代碼函數(shù)封裝到Java類中 Java類是Java代碼的一部分 包含了Java方法以及執(zhí)行動(dòng)作的單元 5 MATLABBuilderNE可以將MATLAB函數(shù)打包 以便 NET用戶可以從任何CLS相兼容的語言中訪問這些函數(shù) 7 2020 4 20 一 關(guān)于MATLAB編譯器產(chǎn)生的應(yīng)用程序或運(yùn)行庫 當(dāng)用戶打包和部署由MATLAB編譯器產(chǎn)生的應(yīng)用程序和運(yùn)行庫時(shí) 必須包含MATLAB編譯器運(yùn)行庫 MATLABCompilerRuntime 簡稱MCR 以及由編譯器產(chǎn)生的一系列支持文件 同時(shí) 必須在目標(biāo)計(jì)算機(jī)上指定這些文件的系統(tǒng)路徑 以便系統(tǒng)能夠找到這些文件 MATLAB編譯器產(chǎn)生的應(yīng)用程序或運(yùn)行庫包括兩部分 一個(gè)平臺(tái)相關(guān)的二進(jìn)制文件以及一個(gè)包含MATLAB函數(shù)和數(shù)據(jù)的文檔 CTF 應(yīng)用程序的二進(jìn)制文件由一個(gè)主函數(shù)組成 而運(yùn)行庫的二進(jìn)制文件由多個(gè)用戶輸出的函數(shù)組成 幾個(gè)要點(diǎn) 8 2020 4 20 二 關(guān)于打包器 wrapper 文件 要產(chǎn)生用戶指定的 平臺(tái)相關(guān)的二進(jìn)制文件 編譯器產(chǎn)生一個(gè)或多個(gè)打包器文件 打包器文件提供了指向被編譯的M代碼的接口 函數(shù) 通過這些接口 打包器文件可以創(chuàng)建MATLAB編譯器生成的代碼與所支持的可執(zhí)行程序 如獨(dú)立應(yīng)用程序或庫 之間的鏈接 打包器文件依據(jù)執(zhí)行環(huán)境的不同而不同 打包器文件主要實(shí)現(xiàn)如下功能 1 通過特定的接口 函數(shù) 執(zhí)行初始化和終止工作 2 定義包含路徑信息 密鑰以及MCR所需的其它信息的數(shù)據(jù)數(shù)組 3 提供必需的代碼 用來將調(diào)用信息從接口函數(shù)傳遞給包含在MCR中的MATLAB函數(shù) 4 對(duì)于應(yīng)用程序 包含主函數(shù) main函數(shù) 5 對(duì)于運(yùn)行庫 包含每個(gè)公開的M函數(shù)的入口點(diǎn) 當(dāng)使用編譯器產(chǎn)生的運(yùn)行庫時(shí) 在客戶端代碼中調(diào)用庫初始化和終止例程 9 2020 4 20 三 組件技術(shù)文件 CTF 組件技術(shù)文件 ComponentTechnologyFile 簡稱CTF MATLAB編譯器在編譯的同時(shí)也產(chǎn)生組件技術(shù)文件 CTF 該文件獨(dú)立于應(yīng)用程序或運(yùn)行庫 并于每個(gè)操作系統(tǒng)平臺(tái)相關(guān)的 該文件以 ctf作為后綴 包含定義應(yīng)用程序或運(yùn)行庫的MATLAB函數(shù)和數(shù)據(jù) 并且在默認(rèn)的情況下 內(nèi)嵌于共享的C C 庫和獨(dú)立的應(yīng)用程序的二進(jìn)制文件中 10 2020 4 20 第二節(jié)MATLAB編譯器的安裝及配置 11 2020 4 20 安裝要求 編譯器的安裝 編譯器的配置 本節(jié)的主要內(nèi)容包括 12 2020 4 20 一 安裝要求 在安裝MATLAB編譯器之前 用戶必須確保在系統(tǒng)中安裝了合適版本的MATLAB軟件 MathWorks公司的網(wǎng)站上提供了相關(guān)的信息 用戶可在以下網(wǎng)頁中查找編譯器的相關(guān)信息 1 系統(tǒng)要求 13 2020 4 20 MATLAB編譯器還需要在系統(tǒng)中安裝其所支持的ANSIC C 編譯器 例如 BorlandC C MicrosoftVisualC WatcomC C LccC編譯器等 通常 MATLAB編譯器都支持第三方編譯器的當(dāng)前版本以及舊的版本 對(duì)于MATLAB以及MATLAB編譯器所支持的最新的編譯器列表 請參照MathWorks公司技術(shù)支持部門的技術(shù)備忘錄 其網(wǎng)址為 2 支持的第三方編譯器 14 2020 4 20 1 支持的ANSIC C Windows平臺(tái)編譯器使用如下的32位的C C 編譯器可以產(chǎn)生32位Windows動(dòng)態(tài)鏈接庫 DLLs 或Windows應(yīng)用程序 以MATLABV4 14 R2010b 編譯器為例 1 LccC2 4 1 包含于MATLAB中 這僅是個(gè)C編譯器 不針對(duì)C 2 MicrosoftVisualC MSVC 6 0 8 0 9 0 10 0 3 IntelC 11 1 4 OpenWatcom1 8 5 IntelVisualFortran10 1 11 1 6 Microsoft NETFrameworkSDK2 0 3 0 3 5 7 SunJavaDevelopmentKit JDK 1 6 1 支持的ANSIC C UNIX平臺(tái)編譯器在Solaris平臺(tái)上 MATLAB編譯器支持本地系統(tǒng)編譯器 在Linux Linuxx86 64和MacOSX平臺(tái)上 MATLAB編譯器支持gcc和g 15 2020 4 20 二 編譯器的安裝 MATLAB編譯器包含于MATLAB軟件產(chǎn)品中 因此 如果用戶初次安裝MATLAB軟件產(chǎn)品 可以在安裝的過程中選中要安裝的MATLAB編譯器產(chǎn)品 然后執(zhí)行標(biāo)準(zhǔn)安裝 如果在初次安裝的過程中沒有選中MATLAB編譯器產(chǎn)品 可以重新運(yùn)行安裝程序 選中要安裝的MATLAB編譯器產(chǎn)品 然后安裝即可 1 安裝MATLAB編譯器產(chǎn)品 16 2020 4 20 安裝MATLAB軟件的過程中選擇安裝編譯器產(chǎn)品 17 2020 4 20 要安裝ANSIC C 編譯器 需要執(zhí)行包含有C C 編譯器的安裝向?qū)?正常安裝并正確配置即可 用戶在安裝C C 編譯器時(shí)可能會(huì)遇到有關(guān)配置的問題 下表提供了有關(guān)配置信息的常見問題 2 安裝ANSIC C 編譯器 18 2020 4 20 19 2020 4 20 1 關(guān)于mbuild的應(yīng)用 三 編譯器的配置 用戶使用mbuild腳本可以方便地指定一個(gè)選項(xiàng)文件 optionsfile 該選項(xiàng)文件允許用戶進(jìn)行如下操作 為每個(gè)可支持的編譯器設(shè)置默認(rèn)的編譯器和連接器選項(xiàng) 修改編譯器或編譯器設(shè)置 創(chuàng)建應(yīng)用程序 mbuild簡化了設(shè)置C或C 編譯器的過程 用戶只需使用mbuild的setup選項(xiàng)即可一次性確定所要使用的第三方編譯器 MATLAB編譯器 mcc 產(chǎn)品在一定的條件下自動(dòng)啟動(dòng)mbuild 特別地 mcc m或mcc l 小寫的L 將啟動(dòng)mbuild來執(zhí)行編譯和連接 20 2020 4 20 2 配置ANSIC或C 編譯器 說明 選項(xiàng)文件包含用來控制已安裝的編譯器的標(biāo)志或設(shè)置 選項(xiàng)文件是與編譯器相關(guān)的 MathWorks公司對(duì)不同的C C 編譯器都提供了不同的選項(xiàng)文件 用戶可以根據(jù)需要修改選項(xiàng)文件的內(nèi)容 但在通常情況下 用戶不必關(guān)心選項(xiàng)文件的內(nèi)容 而只是簡單地使用mbuild的setup選項(xiàng)來配置C或C 編譯器即可 使用下面的命令可以選擇一個(gè)默認(rèn)的編譯器 mbuild setup 21 2020 4 20 例 配置編譯器 mbuild setup 調(diào)用mbuild腳本來啟動(dòng)配置PleasechooseyourcompilerforbuildingstandaloneMATLABapplications 啟動(dòng)MATLAB的自定位系統(tǒng) MATLAB會(huì)自動(dòng)搜索系統(tǒng)中安裝的編譯器Wouldyoulikembuildtolocateinstalledcompilers y n ySelectacompiler 1 Lcc win32C2 4 1inD PROGRA 1 MATLAB R2008a sys lcc 2 MicrosoftVisualC 6 0inD ProgramFiles MicrosoftVisualStudio 0 NoneCompiler 2 選擇編譯器Pleaseverifyyourchoices 確定選擇的編譯器Compiler MicrosoftVisualC 6 0Location D ProgramFiles MicrosoftVisualStudioArethesecorrect y n y 結(jié)束配置Tryingtoupdateoptionsfile C DocumentsandSettings Administrator ApplicationData MathWorks MATLAB R2008a compopts batFromtemplate D PROGRA 1 MATLAB R2008a bin win32 mbuildopts msvc60compp batDone 22 2020 4 20 驗(yàn)證編譯器配置是否正確 在當(dāng)前目錄中創(chuàng)建test m文件 文件內(nèi)容很簡單 彈出信息框 顯示 Hello World 信息 在命令窗口中調(diào)用mcc對(duì)test m文件進(jìn)行編譯 mcc mtest m編譯完成后 產(chǎn)生test exe文件 用鼠標(biāo)雙擊即可正常運(yùn)行 表明編譯器設(shè)置正確 23 2020 4 20 3 選項(xiàng)文件 MATLAB軟件中包含了用于Windows平臺(tái)和UNIX平臺(tái)的預(yù)置選項(xiàng)文件 如下表所列 以MATLABR2008a為例 注 這些選項(xiàng)僅適用于32位MATLAB軟件 通常情況下 用戶不必關(guān)心選項(xiàng)文件是如何工作的 當(dāng)然 用戶也可以根據(jù)自己的需要來修改選項(xiàng)文件 24 2020 4 20 MATLAB中的預(yù)置選項(xiàng)文件列表 25 2020 4 20 要定位在Windows系統(tǒng)下的選項(xiàng)文件 mbuild腳本按照如下的順序進(jìn)行搜索 1 當(dāng)前目錄 2 Windows系統(tǒng)的用戶配置文件目錄 Windows系統(tǒng)的用戶配置目錄中包含了諸如桌面外觀 最近使用的文件 開始 菜單中的項(xiàng)目等用戶信息 mbuild將在 setup過程中創(chuàng)建的選項(xiàng)文件compopts bat保存到用戶配置文件目錄的一個(gè)子目錄中 例如C DocumentsandSettings Administrator ApplicationData MathWorks MATLAB R2008a 如下圖所示 初次運(yùn)行mbuild命令時(shí) 它會(huì)在上述兩個(gè)路徑中搜索選項(xiàng)文件 一旦找到選項(xiàng)文件則停止搜索 并使用該選項(xiàng)文件 如果沒有搜索到選項(xiàng)文件 則mbuild搜索計(jì)算機(jī)上已安裝的編譯器 并為該編譯器使用MATLAB預(yù)置的選項(xiàng)文件 如果計(jì)算機(jī)上有多個(gè)編譯器 則提示用戶選擇一個(gè)編譯器 關(guān)于Windows操作系統(tǒng)中的選項(xiàng)文件 26 2020 4 20 27 2020 4 20 要定位在UNIX系統(tǒng)下的選項(xiàng)文件 mbuild腳本按照如下的順序進(jìn)行搜索 1 當(dāng)前目錄 2 HOME matlab current release 3 matlabroot bin 關(guān)于Unix操作系統(tǒng)中的選項(xiàng)文件 28 2020 4 20 第三節(jié)編譯 29 2020 4 20 有關(guān)MATLAB編譯器技術(shù)mcc命令詳解輸入輸出文件 本節(jié)的內(nèi)容包括 30 2020 4 20 一 有關(guān)MATLAB編譯器技術(shù) MATLAB編譯器4 0使用MATLAB運(yùn)行庫 MCR MCR是一個(gè)使M文件能夠執(zhí)行的共享庫的獨(dú)立集合 使用MCR 可以在沒有安裝MATLAB軟件的計(jì)算機(jī)上執(zhí)行MATLAB文件 MCR提供了對(duì)MATLAB中幾乎所有函數(shù)的支持 MCR使用了線程封鎖技術(shù) 保證一次只能有一個(gè)線程允許訪問MCR 1 MATLAB編譯器運(yùn)行庫 MATLABCompilerRuntime 31 2020 4 20 編譯器4 0使用了組件技術(shù)文件 CTF 來容納可部署的程序包 所有的M文件都被加密到CTF文檔中 加密時(shí)使用高級(jí)加密標(biāo)準(zhǔn) AES 密碼系統(tǒng) 其對(duì)稱密鑰使用1024位的RSA來保護(hù) MATLAB編譯器所產(chǎn)生的每一個(gè)應(yīng)用程序或共享庫都有相關(guān)聯(lián)的CTF文檔 文檔中包含所有與組件相關(guān)聯(lián)的 基于MATLAB的內(nèi)容 M文件 MEX文件 等等 當(dāng)CTF檔案檔案解壓到用戶的系統(tǒng)中時(shí) 這些文件仍保持加密狀態(tài) 2 組件技術(shù)文件 32 2020 4 20 1 依存關(guān)系檢查分析 判斷用戶提供的M文件 MEX文件以及P文件所依存的函數(shù)之間的關(guān)系 并創(chuàng)建文件列表 該列表包括由輸入的M文件調(diào)用的所有M文件以及這些M文件所調(diào)用的文件 等等 此外 還包括所有內(nèi)置函數(shù)以及MATLAB對(duì)象 2 封裝代碼生成產(chǎn)生創(chuàng)建目標(biāo)組件所需要的所有源代碼 包括 應(yīng)用于命令行的M函數(shù)的C C 接口代碼 ex21 3 1 main c 對(duì)于數(shù)據(jù)庫和組件 該文件包括所有的接口函數(shù) 組件數(shù)據(jù)文件 該文件包含運(yùn)行時(shí)執(zhí)行M代碼所需的信息 這些信息包括路徑信息以及用于加載保存在組件的CTF文檔中的M代碼的密鑰 3 組件創(chuàng)建過程 33 2020 4 20 3 CTF文檔創(chuàng)建在依賴檢查中創(chuàng)建的MATLAB文件 M文件和MEX文件 列表用于創(chuàng)建CTF文檔 CTF文檔包含組件正常執(zhí)行所需要的文件 這些文件被加密并壓縮到單個(gè)文件中以方便部署 目錄信息也包含在其中 以確保目錄中的文件能被正確地安裝到目標(biāo)計(jì)算機(jī) 4 C C 編譯將在 封裝器代碼生成 中產(chǎn)生的C C 文件編譯為目標(biāo)代碼 用戶在mcc命令行中指定的C C 代碼也同時(shí)被編譯 5 連接將產(chǎn)生的目標(biāo)文件和必需的MATLAB庫文件相連接 并生成最終的組件 C C 編譯和連接使用包含在MATLAB編譯器產(chǎn)品中的mbuild應(yīng)用程序 34 2020 4 20 MATLAB編譯器的編譯過程 35 2020 4 20 二 mcc命令詳解 1 mcc命令的語法 mcc options mfile1 mfile2 mfileN C C file1 C C fileN 其中 參數(shù)options可以選擇如下的值 1 a使用 afilename來指定直接添加到CTF文檔中的文件 也可以使用多個(gè) a選項(xiàng) MATLAB編譯器在MATLAB路徑上查找這些文件 如果文件不在MATLAB路徑上 需要指定文件的完整路徑名稱 如果 a選項(xiàng)中只包括目錄的名稱 則目錄中的所有文件將循環(huán)添加到CTF文檔中 例如 將當(dāng)前工作目錄中的testdir目錄及其子目錄中的所有文件都添加到CTF文檔中 并且目錄的子樹也保存到CTF文檔中 36 2020 4 20 mcc mhello m a testdir如果在文件名中包含通配符 則只有在目錄中符合給定格式的文件被添加的CTF文檔中 而子目錄中的文件卻不會(huì)被添加 例如 mcc mhello m a testdir 在本例中 在 testdir目錄中的所有文件都會(huì)被添加到CTF文檔中 而在 testdir目錄下的所有子目錄中的文件則不被添加 mcc mhello m a testdir m testdir目錄下所有擴(kuò)展名為 m的文件都將被添加到CTF文檔檔案中 而在 testdir目錄下的所有子目錄中的文件則不被添加 37 2020 4 20 其中 參數(shù)options可以選擇如下的值 1 a使用 afilename來指定直接添加到CTF文檔中的文件 也可以使用多個(gè) a選項(xiàng) MATLAB編譯器在MATLAB路徑上查找這些文件 如果文件不在MATLAB路徑上 需要指定文件的完整路徑名稱 如果 a選項(xiàng)中只包括目錄的名稱 則目錄中的所有文件將循環(huán)添加到CTF文檔中 例如 將當(dāng)前工作目錄中的testdir目錄及其子目錄中的所有文件都添加到CTF文檔中 并且目錄的子樹也保存到CTF文檔中 38 2020 4 20 2 b產(chǎn)生與Excel兼容的公式函數(shù)產(chǎn)生一個(gè)VisualBasic文件 bas 該文件包含一個(gè)用于編譯器產(chǎn)生的COM對(duì)象的Excel公式函數(shù) MicrosoftExcelFormulaFunction 界面 允許MATLAB函數(shù)作為單元公式函數(shù)使用 3 B指定束 bundle 文件使用指定文件的內(nèi)容來替代在mcc命令行中的文件 使用語法為 Bfilename 束文件filename應(yīng)只包含mcc命令行選項(xiàng) 相應(yīng)的參數(shù) 和 或其它文件名 束文件可以包含其它 B選項(xiàng) 下表列出了MATLAB編譯器產(chǎn)品中的束文件列表 39 2020 4 20 4 c 小寫C 只產(chǎn)生C代碼當(dāng)使用宏選項(xiàng)時(shí) 只產(chǎn)生C封裝代碼 而不啟動(dòng)mbuild而產(chǎn)生獨(dú)立的應(yīng)用程序 該選項(xiàng)相當(dāng)于放在mcc命令行的末尾的 Tcodegen 5 C 大寫C 默認(rèn)情況下不嵌入CTF文檔缺省情況下 指示mcc不在C C 文件 main Winmain共享庫和獨(dú)立的二進(jìn)制文件中嵌入CTF文檔 6 d指定輸出目錄 ddirectory將編譯產(chǎn)生的輸出存放到由 d選項(xiàng)指定的目錄directory中 40 2020 4 20 7 e禁止MS DOS命令窗口當(dāng)產(chǎn)生獨(dú)立的應(yīng)用程序時(shí) 禁止MS DOS命令窗口的出現(xiàn) 使用 e來替換 m選項(xiàng) 該選項(xiàng)僅用于Windows系統(tǒng) 使用 R選項(xiàng)來產(chǎn)生錯(cuò)誤日志文件 mcc e R logfile log file txt vfunction name該宏等價(jià)于 WWinmain Tlink exe使用 e選項(xiàng)需要應(yīng)用程序是使用微軟的編譯器 例如MicrosoftVisualStudioExpress 編譯的 而不是使用MABLAB自帶的編譯器編譯的 8 f指定的選項(xiàng)文件 ffilename使用指定的選項(xiàng)文件覆蓋默認(rèn)的選項(xiàng)文件 該選項(xiàng)可使用戶在調(diào)用不同的MATLAB編譯器產(chǎn)品時(shí)使用不同的ANSI編譯器 該選項(xiàng)直接傳遞給mbuild腳本 MathWorks建議用戶不使用該選項(xiàng) 而直接使用mbuild setup命令 41 2020 4 20 9 F指定的項(xiàng)目文件 指定mcc使用包含在指定的項(xiàng)目文件 prj 中的設(shè)置 當(dāng)調(diào)用mcc時(shí) 使用 Fproject name prj用來指定項(xiàng)目文件的名稱為project name 該選項(xiàng)使得 prj文件及其所有附屬的設(shè)置都返回給mcc 使用mcc或deploytool創(chuàng)建的項(xiàng)目文件都可以用到該選項(xiàng)中 10 g產(chǎn)生調(diào)試信息包含由MATLAB編譯器產(chǎn)生的C C 代碼的調(diào)試信息 mbuild會(huì)將合適的調(diào)試標(biāo)志傳遞給C C 編譯器 調(diào)試選項(xiàng)使得用戶可以追溯在什么地方產(chǎn)生了錯(cuò)誤 是在MCR的初始化 函數(shù)的調(diào)用還是終止例程中產(chǎn)生了錯(cuò)誤 該選項(xiàng)不允許用戶使用C C 調(diào)試器來調(diào)試用戶的M文件 11 G同 g 僅用于調(diào)試 42 2020 4 20 12 I添加目錄到引用路徑中向引用目錄列表中添加新的目錄 每一個(gè) I選項(xiàng)都會(huì)在搜索路徑的列表的開頭添加一個(gè)目錄 例如 I I設(shè)置搜索路徑 從而directory1首先用于M文件的搜索 接下來是directory2 該選項(xiàng)對(duì)于不能訪問MATLAB路徑的獨(dú)立編譯來說是很重要的 13 l 小寫L 生成函數(shù)庫該選項(xiàng)為命令行中的每一個(gè)M文件生成一個(gè)庫封裝函數(shù) 并調(diào)用C編譯器來創(chuàng)建共享庫 該共享庫導(dǎo)出這些函數(shù) 庫的名字與組件的名字相同 也就是命令行上的第一個(gè)M文件的名字 該宏等價(jià)于 Wlib stringlink lib 14 m產(chǎn)生一個(gè)獨(dú)立的應(yīng)用程序該宏等價(jià)于 Wmain Tlink exe 使用 e選項(xiàng)代替 m選項(xiàng)來產(chǎn)生獨(dú)立的應(yīng)用程序 同時(shí)禁止MS DOS命令窗口的出現(xiàn) 使用 e選項(xiàng)需要應(yīng)用程序是使用Microsoft的編譯器 例如MicrosoftVisualStudioExpress 編譯的 43 2020 4 20 15 M定義編譯時(shí)間選項(xiàng) Mstring將string直接傳遞給mbuild腳本 這提供了一種定義編譯時(shí)間選項(xiàng)的有用機(jī)制 例如 Dmacro value 如果使用多個(gè) M選項(xiàng) 只有最右邊的一個(gè)起作用 16 N清除路徑有效清除最小目錄集以外的路徑 下列的核心目錄及其子目錄除外 matlabroot toolbox matlabmatlabroot toolbox localmatlabroot toolbox compiler deploy在mcc命令行中包含 N選項(xiàng) 允許用戶替換原始路徑中的目錄 同時(shí)保留引用目錄的相對(duì)順序 出現(xiàn)在原始路徑中的引用目錄中的所有子目錄也將被替換 此外 N選項(xiàng)保留用戶已經(jīng)引用 但不在matlabroot toolbox路徑下的所有目錄 44 2020 4 20 17 o指定輸出文件名稱指定最終可執(zhí)行文件的名稱 僅用于獨(dú)立的應(yīng)用程序 使用 ooutputfile來命名MATLAB編譯器產(chǎn)生的最終可執(zhí)行輸出文件 在指定的名稱后將添加合適的 與平臺(tái)相關(guān)的擴(kuò)展名 如 exe用于Windows獨(dú)立應(yīng)用程序 18 p向編譯路徑中添加目錄和選項(xiàng) N聯(lián)合使用 可以添加matlabroot toolbox路徑下指定的目錄和子目錄到MATLAB編譯路徑下 N pdirectory其中 directory是要添加的目錄 如果directory不是絕對(duì)路徑 則假定它在當(dāng)前工作目錄下 以下規(guī)則定義了這些目錄是如何在編譯路徑中引用的 如果目錄在原始MATLAB路徑上 則目錄及其子目錄都被添加到編譯路徑下 如果目錄不在原始MATLAB路徑上 在該目錄不會(huì)被添加到編譯路徑下 用戶可以使用 I選項(xiàng)來添加 45 2020 4 20 19 R運(yùn)行時(shí)間 僅適用于獨(dú)立的應(yīng)用程序 提供MCR運(yùn)行庫選項(xiàng) 使用 Roption可以提供如下表所列的運(yùn)行選項(xiàng) 20 S創(chuàng)建單個(gè)MCR當(dāng)編譯多個(gè)COM對(duì)象時(shí) 創(chuàng)建單個(gè)MCR 每個(gè)組件的實(shí)例都使用相同的MCR 該選項(xiàng)需要MATLABBuilderNE編譯器 46 2020 4 20 21 T指定產(chǎn)生目標(biāo)文件的階段和類型使用 Ttarget來定義輸出的類型 有效的target的值如下表所列 22 v詳述 v選項(xiàng)傳遞給mbuild并顯示關(guān)于mbuild的信息 包括 MATLAB編譯器版本號(hào) 源文件名稱 產(chǎn)生的輸出文件名稱 mbuild的啟動(dòng) 47 2020 4 20 23 w警告信息顯示警告信息 使用 woption 來控制警告信息的顯示 有效的語法形式如下表所示 48 2020 4 20 24 W打包器文件使用 Wtype來控制打包器函數(shù)的創(chuàng)建 用戶提供一組函數(shù) MATLAB編譯器產(chǎn)生打包器函數(shù)以及合適的全局變量定義 下表列出了有效的選項(xiàng) 49 2020 4 20 25 Y許可文件使用 Ylicense dat file來使用指定的參數(shù)覆蓋默認(rèn)的license dat文件 26 z指定路徑為庫文件和引用文件指定路徑 使用 zpath來指定編譯器庫文件和引用文件所使用的路徑為path 從而代替由matlabroot返回的路徑 27 幫助信息在命令提示下顯示MATLAB編譯器的幫助信息 50 2020 4 20 2 使用mcc命令 1 編譯器選項(xiàng) 可以給mcc指定一個(gè)或多個(gè)MATLAB編譯器選項(xiàng) 例如 mcc m gmyfile m宏是MATLAB提供的編譯器選項(xiàng) 使得用戶不必手工組合多個(gè)選項(xiàng)來實(shí)現(xiàn)指定的編譯工作 例如 選項(xiàng) l與下列宏等價(jià) Wlib Tlink lib選項(xiàng) m與下列宏等價(jià) Wmain Tlink exe 51 2020 4 20 2 組合選項(xiàng) 可以把不帶參數(shù)的選項(xiàng)組合到一起使用 例如 mcc mgmyfile m帶參數(shù)的選項(xiàng)通常不能組合到一起 除非把帶參數(shù)的選項(xiàng)及其參數(shù)放置在命令列表的最后 例如 下面是正確的用法 選項(xiàng)單獨(dú)列出mcc v Wmain Tlink exemyfile m 將選項(xiàng)組合mcc vWmain Tlink exemyfile m下面是錯(cuò)誤的用法 mcc Wvmain Tlink exemyfile m 錯(cuò)誤的用法 52 2020 4 20 3 命令行中的沖突選項(xiàng)如果在命令行中使用的選項(xiàng)發(fā)生沖突 則編譯器優(yōu)先考慮最右側(cè)的選項(xiàng) 例如 在命令行中使用以下選項(xiàng) mcc m Wnonemyfile m由于 m選項(xiàng)相當(dāng)于 Wmain Tlink exe 因此兩個(gè) W選項(xiàng)發(fā)生沖突 則編譯器只取最右邊的選項(xiàng) 即 Wnone選項(xiàng) 所以 以上命令與下列命令等價(jià) mcc Wnonemyfile m 53 2020 4 20 三 輸入和輸出文件 例2 MATLAB編譯器以ex21 3 1 m作為輸入 產(chǎn)生獨(dú)立的應(yīng)用程序ex21 3 1 exe 1 獨(dú)立的可執(zhí)行文件 functionex21 3 1x 0 pi 50 2 pi y sin x figure 1 plot x y r gridon 54 2020 4 20 最終產(chǎn)生的文件列表 55 2020 4 20 例 在本例中 MATLAB編譯器將M文件ex21 3 1 m編譯為C共享庫文件libmyshared dll 用戶在配置好編譯器后 在命令窗口中輸入命令 mcc Wlib libmyshared Tlink libex21 3 1 m 2 C共享庫文件 編譯所產(chǎn)生的文件如下表所列 56 2020 4 20 57 2020 4 20 例 在本例中 MATLAB編譯器將M文件ex21 3 1 m編譯為C 共享庫文件libmyshared dll 在命令窗口中輸入命令 mcc Wcpplib libmyshared Tlink libex21 3 1 m 3 C 共享庫文件 編譯所產(chǎn)生的文件如下表所列 58 2020 4 20 59 2020 4 20 第四節(jié)部署 60 2020 4 20 1 確定需要打包的文件 2 使用部署工具 DeploymentTool 3 部署到目標(biāo)計(jì)算機(jī) 本節(jié)主要包括以下內(nèi)容 61 2020 4 20 當(dāng)用戶創(chuàng)建了數(shù)據(jù)庫 組件或應(yīng)用程序后 需要將運(yùn)行時(shí)所需的文件打包 以便部署到目標(biāo)計(jì)算機(jī)中 那么 對(duì)不同的應(yīng)用程序類型 到底哪些文件需要打包呢 以下分別介紹 一 確定需要打包的文件 62 2020 4 20 1 獨(dú)立的應(yīng)用程序 63 2020 4 20 2 C C 共享庫 64 2020 4 20 3 NET組件 65 2020 4 20 4 COM組件 66 2020 4 20 5 使用MicrosoftExcel的COM組件 6 Java組件用戶需創(chuàng)建包含componentName jar文件的Java軟件包 該軟件包在componentName ctf文件中包含指向M代碼的Java接口 67 2020 4 20 部署工具是MATLAB編譯器配備的圖形用戶界面 GUI 用戶可以通過該工具提供的圖形用戶界面來使用MATLAB命令行接口 以編譯并打包要部署在不同計(jì)算機(jī)上的組件 用戶可通過部署工具執(zhí)行以下操作 1 指定主MATLAB函數(shù) 2 添加無法通過依賴檢查自動(dòng)識(shí)別的文件 如數(shù)據(jù)文件或圖像等 3 保存編輯和打包首選項(xiàng)內(nèi)容到項(xiàng)目文件 prj 中 4 對(duì)MATLAB應(yīng)用程序進(jìn)行編譯和打包 當(dāng)用戶構(gòu)建應(yīng)用程序或組件時(shí) MATLAB編譯器可以確定需要哪些MATLAB函數(shù)來支持用戶添加的文件并對(duì)代碼進(jìn)行加密 然后將這些文件封裝為可執(zhí)行文件或組件 二 使用部署工具 68 2020 4 20 在CommandWindow中輸入deploytool命令 將會(huì)出現(xiàn)如圖所示的對(duì)話框 用戶可以選擇新建一個(gè)部署項(xiàng)目 或者打開一個(gè)已有的部署項(xiàng)目 69 2020 4 20 1 新建項(xiàng)目 選擇File NewDeploymentProject菜單項(xiàng)或者使用鼠標(biāo)點(diǎn)擊工具條上的New按鈕 將會(huì)彈出 NewDeploymentProject 對(duì)話框 70 2020 4 20 分別選擇左側(cè)列表中的MATLAB編譯器產(chǎn)品 在右側(cè)列表中列出對(duì)應(yīng)的編譯器產(chǎn)品所能創(chuàng)建的應(yīng)用程序類型 MATLABCompiler產(chǎn)品 71 2020 4 20 MATLABBuilderEX產(chǎn)品 72 2020 4 20 MATLABBuilderNE產(chǎn)品 73 2020 4 20 MATLABBuilderJA產(chǎn)品 74 2020 4 20 2 向項(xiàng)目中添加需要編譯的文件 在新建項(xiàng)目中的 NewDeploymentProject 對(duì)話框中點(diǎn)擊OK按鈕 即可彈出如下圖所示的對(duì)話框 選擇Project菜單中的AddFile菜單項(xiàng)或點(diǎn)擊工具條中的 AddFile 按鈕 可彈出 Open 對(duì)話框 用戶可以定位所需的文件并把它們添加到項(xiàng)目中 75 2020 4 20 3 設(shè)置項(xiàng)目的相關(guān)信息 選擇Project菜單的 Setting 菜單項(xiàng)或點(diǎn)擊工具條上的 Setting 按鈕 可打開 DeploymentProjectSettings 對(duì)話框 在對(duì)話框中可對(duì)項(xiàng)目的相關(guān)選項(xiàng)進(jìn)行設(shè)置 76 2020 4 20 1 General選項(xiàng)卡的設(shè)置 77 2020 4 20 定義應(yīng)用程序的名稱 Applicationname 如myplot 在OutputDirectories編輯區(qū)域 用戶可以設(shè)置編譯過程中使用的中間目錄 Intermediate 以及輸出目錄 Output 默認(rèn)情況下 deploytool會(huì)在圖21 4 2所示的Location目錄下創(chuàng)建兩個(gè)子目錄Project Name src和Project Name distrib 其中Project Name為在圖21 4 2所示的對(duì)話框的Name中輸入的項(xiàng)目名稱 deploytool會(huì)把編譯過程中產(chǎn)生的中間文件存放到Project Name src中間目錄中 把最終編譯好并可用來部署的文件存放到Project Name distrib目錄中 可以選擇是否產(chǎn)生詳細(xì)的輸出信息 GenerateVerboseOutput 可以選擇是否CTF文檔嵌入到應(yīng)用程序中 EmbedCTFarchiveintotheApplication 在MCR選項(xiàng)中 可以選擇在運(yùn)行時(shí)是否加載Java虛擬機(jī) JVM 等 在 CompilerOptionsFile 區(qū)域 可以定位所需要的選項(xiàng)文件 78 2020 4 20 2 ToolboxesonPath 選項(xiàng) 用戶可以設(shè)置在項(xiàng)目的創(chuàng)建過程中要搜索哪些工具箱 去掉不必要的工具箱可以減少編譯的時(shí)間 也會(huì)減小CTF的大小 79 2020 4 20 3 C C Compiler 選項(xiàng) 用戶可以修改C C 編譯器設(shè)置 例如 為封裝的代碼產(chǎn)生調(diào)試信息 可以幫助用戶發(fā)現(xiàn)應(yīng)用程序中的問題 80 2020 4 20 4 Warning 選項(xiàng) 用戶可以指定在編譯的過程中將在輸出窗口中產(chǎn)生哪些MATLAB編譯器信息 81 2020 4 20 5 Packaging 選項(xiàng) 用戶可以對(duì)程序打包所需要的信息和文件進(jìn)行設(shè)置 用戶可以指定程序包的名稱 PackageName 將指定的MCR文件包含進(jìn)程序包 同時(shí) 也可以指定項(xiàng)目中未包含 但為使MATLAB代碼可以正常運(yùn)行所需要的外部文件 82 2020 4 20 4 對(duì)項(xiàng)目進(jìn)行編譯和鏈接 經(jīng)過上述2 3兩個(gè)步驟 用戶可選擇DeploymentTool窗口上的Tools菜單中的Build菜單項(xiàng) 或者點(diǎn)擊工具條上的 Buildtheproject 按鈕 即可對(duì)項(xiàng)目進(jìn)行編譯和連接 并在 DeployToolOutput 窗口中給出信息提示 83 2020 4 20 在編譯和連接完成后 可以看到在項(xiàng)目所在的路徑下新產(chǎn)生了兩個(gè)子目錄 其中 distrib子目錄中包含文件即為用戶用來部署到目標(biāo)計(jì)算機(jī)中的文件 84 2020 4 20 5 打開一個(gè)已有項(xiàng)目 在利用mcc命令來將m文件編譯為獨(dú)立的應(yīng)用程序時(shí) 可以看到 在目標(biāo)文件夾中的文件中包含了后綴為 prj的文件 該文件即為相應(yīng)的項(xiàng)目文件 可以使用deploytool部署工具來打開該文件 在deploytool中打開該文件后 用戶可以重新修改項(xiàng)目的設(shè)置 然后重新編譯該項(xiàng)目文件 6 將文件打包 無論對(duì)于由mcc命令編譯產(chǎn)生的文件或者由deploytool工具編譯產(chǎn)生的文件 prj 都可以使用deploytool工具打開 然后將需要的文件進(jìn)行打包 以便部署到目標(biāo)計(jì)算機(jī)中 用戶可以對(duì)需要打包的文件進(jìn)行設(shè)置 可以選擇將MATLABCompilerRuntime MCR 包含到軟件包中 也可以選擇將其它需要的文件包含到軟件包中 選擇Tools菜單中的Package菜單項(xiàng) 或者點(diǎn)擊工具條上的 Packagetheproject 按鈕 deploytool工具會(huì)自動(dòng)將所需的文件進(jìn)行打包處理 并且在輸出窗口中給出提示信息 85 2020 4 20 打包信息提示 86 2020 4 20 1 Windows操作系統(tǒng)下的部署步驟 1 打開包含運(yùn)行時(shí)所需的軟件包 2 在目標(biāo)計(jì)算機(jī)上運(yùn)行MCRInstaller一次 MCRInstaller將打開一個(gè)命令窗口 開始安裝 3 如果部署的是Java應(yīng)用程序 用戶必須在目標(biāo)計(jì)算機(jī)上設(shè)置Java類所在的路徑 2 Unix操作系統(tǒng)下的部署步驟 1 安裝MCR 找到MCRInstaller zip文件 把它復(fù)制到目標(biāo)計(jì)算機(jī)上的文件夾中 該文件夾將成為數(shù)據(jù)庫或應(yīng)用程序的安裝文件夾 然后解壓MCRInstaller zip文件 并安裝MCR 2 正確地設(shè)置路徑環(huán)境變量 3 如果部署的是Java應(yīng)用程序 用戶必須在目標(biāo)計(jì)算機(jī)上設(shè)置類的路徑 三 部署到目標(biāo)計(jì)算機(jī) 87 2020 4 20 例 將包含應(yīng)用程序的軟件包部署到目標(biāo)計(jì)算機(jī)中 將例21 4 1生成的軟件包first pro pkg exe復(fù)制到目標(biāo)計(jì)算機(jī)中的某一個(gè)文件夾 然后按照如下步驟來部署 1 雙擊first pro pkg exe圖標(biāo) 運(yùn)行軟件包自解壓程序 88 2020 4 20 2 自動(dòng)運(yùn)行MCRInstaller exe程序 安裝MCR 89 2020 4 20 90 2020 4 20 3 安裝完MCR后 即可在軟件包所在的文件夾中找到first pro exe文件 雙擊該文件 即可顯示DOS界面 解壓CTF文件 并運(yùn)行應(yīng)用程序 91 2020 4 20 第五節(jié)典型案例介紹 92 2020 4 20 以下示例程序均以MATLABCompiler4 8 R2008a 為編譯工具 有關(guān)Compiler4 8的詳細(xì)信息 請參考MATLAB在線幫助文檔 說明 93 2020 4 20 1 案例背景在MATLAB中的M文件有兩種 腳本文件 MATLABscripts 和函數(shù)文件 MATLABfunctions 兩種M文件都是以 m作為文件擴(kuò)展名 但有很大的不同 MATLAB提供了豐富的繪圖函數(shù) 可以實(shí)現(xiàn)強(qiáng)大的繪圖功能 利用句柄圖形 HandlesGraphics 的概念 用戶可以解決復(fù)雜的繪圖問題 本例主要講述利用MATLAB提供的命令來創(chuàng)建圖形窗口 坐標(biāo)軸 按鈕控件 并且在坐標(biāo)軸中繪制圖形 修改圖形的顏色 將代碼保存為MATLAB腳本文件 最后 利用MATLAB編譯器編譯為獨(dú)立的應(yīng)用程序 一 將腳本M文件編譯為獨(dú)立的應(yīng)用程序 94 2020 4 20 2 編程要點(diǎn)利用5 4中介紹的直接編寫M文件來開發(fā)圖形用戶界面的方法來創(chuàng)建一個(gè)圖形窗口 figure 名稱為 changecurvecolor 一個(gè)坐標(biāo)軸 axes 在其中繪制正弦曲線 在其上創(chuàng)建四個(gè)下壓按鈕 pushbutton 其中三個(gè)用于改變曲線的顏色 一個(gè)用于關(guān)閉圖形窗口 將代碼保存為腳本文件 利用MATLAB自帶的LccC編譯器 調(diào)用mcc m命令來編譯M文件 生成的應(yīng)用程序在運(yùn)行時(shí)帶有MS DOS窗口 利用MicrosoftVisualC 6 0編譯器 調(diào)用mcc e命令來編譯M文件 生成的應(yīng)用程序在運(yùn)行時(shí)不再帶有MS DOS窗口 將生成的可執(zhí)行文件打包 以便部署到其它計(jì)算機(jī)中 95 2020 4 20 3 實(shí)現(xiàn) 1 創(chuàng)建圖形用戶窗口 代碼保存為curve color m文件 2 設(shè)置MATLAB自帶的LccC編譯器 并編譯M文件 mbuild setup mcc mcurve color m ddir1編譯完成后 在dir1中出現(xiàn)編譯生成的文件 96 2020 4 20 雙擊curve color exe文件 即可運(yùn)行應(yīng)用程序 可以看到 程序運(yùn)行時(shí)會(huì)出現(xiàn)MS DOS窗口 97 2020 4 20 3 設(shè)置MicrosoftVisualC 6 0編譯器 并編譯M文件 mbuild setup mcc mcurve color m ddir1編譯完成后 在dir1中出現(xiàn)編譯生成的文件 98 2020 4 20 雙擊curve color exe文件 即可運(yùn)行應(yīng)用程序 可以看到 程序運(yùn)行時(shí)不會(huì)出現(xiàn)MS DOS窗口 4 利用DeploymentTool將應(yīng)用程序進(jìn)行打包處理 99 2020 4 20 1 案例背景函數(shù)M文件也是用戶使用MATLAB編程時(shí)經(jīng)常使用的文件形式之一 將MATLAB代碼封裝為函數(shù)M文件的形式 可以使得M文件能夠接受用戶的輸入信息 并將處理的結(jié)果返回給用戶 由其是對(duì)于大型的應(yīng)用程序 可以將其劃分為一個(gè)個(gè)小的功能模塊 每一個(gè)功能模塊使用函數(shù)M文件來實(shí)現(xiàn) 最終集成為整個(gè)應(yīng)用程序 使用函數(shù)M文件 用戶也可以很方便地?cái)U(kuò)展MATLAB的工具箱 等等 本例講述如何將函數(shù)M文件編譯為獨(dú)立的應(yīng)用程序 將上述示例程序修改為函數(shù)M文件保存 并且調(diào)用MATLAB編譯器來創(chuàng)建獨(dú)立的應(yīng)用程序 二 將函數(shù)M文件編譯為獨(dú)立的應(yīng)用程序 100 2020 4 20 2 編程要點(diǎn) 要將curve color m應(yīng)用程序修改為函數(shù)M文件 用戶需要執(zhí)行如下的操作 2 代碼的開頭添加function關(guān)鍵字來定義函數(shù)的名稱 functioncurve colorh0 figure toolbar none units normalized position 0 20 20 60 5 name changecurecolor function為MATLAB的關(guān)鍵字 用來定義函數(shù) curve color為函數(shù)的名稱 函數(shù)名稱必須按照MATLAB中對(duì)變量名稱的約定來定義 函數(shù)也可以選擇帶輸入和輸出參數(shù) 例如 function out1out2 funname in1 in2 在這里選擇不帶輸入和輸出參數(shù) 101 2020 4 20 2 修改程序的代碼稱 由于定義各個(gè)按鈕的回調(diào)函數(shù) Callback 為字符串形式 回調(diào)函數(shù)的代碼在基本 base 工作空間中執(zhí)行 其中的set語句引用的圖形對(duì)象的句柄必須保存在基本工作空間中 而將M文件定義為函數(shù)M文件后 圖形對(duì)象的句柄是保存在了函數(shù) caller 工作空間中的 而這兩個(gè)工作空間中的變量是不能直接相互訪問的 所以 如果不修改代碼 則運(yùn)行程序并點(diǎn)擊按鈕后會(huì)出現(xiàn)如下錯(cuò)誤 提示句柄無效 Errorusing setInvalidhandleobject ErrorwhileevaluatinguicontrolCallback要解決這個(gè)問題 有兩條途徑 將函數(shù)M文件中的變量定義為全局變量全局變量的作用于為整個(gè)MATLAB工作空間 全局變量一旦定義 MATLAB的任何函數(shù)都可以訪問和修改 要把變量定義為全局變量 只需調(diào)用global命令即可 global命令的調(diào)用格式如下 globalXYZ其中 X Y Z表示要定義的全局變量的名稱 可以同時(shí)定義多個(gè)全局變量 變量的個(gè)數(shù)沒有嚴(yán)格的限制 用戶在引用全局變量時(shí) 必須調(diào)用global命令來事前聲明全局變量 然后才能調(diào)用全局變量 清除全局變量時(shí) 需調(diào)用clear命令 clearglobalvar 其中 var為全局變量的名稱 102 2020 4 20 將函數(shù)M文件中的變量指派到基本工作空間中assignin將函數(shù)M文件中的變量的值指派給指定工作空間中的變量 函數(shù)的調(diào)用格式如下 assignin ws var val 其中 ws為標(biāo)識(shí)工作空間的字符串 其值可以為 base 或 caller val為函數(shù)M文件中的局部變量 var 為指定工作空間ws中的變量 若變量 var 在指定工作空間中不存在 則MATLAB自動(dòng)創(chuàng)建該變量 修改程序的代碼 將圖形句柄k的值指派到基本工作空間中的變量k assignin base k k 修改后的M文件見curve color2 m 函數(shù)M文件的編譯和部署的方法與腳本M文件相同 在此不贅述 103 2020 4 20 1 案例背景MATLAB提供了一個(gè)專門用于GUI程序設(shè)計(jì)的快速開發(fā)環(huán)境 GUIDE 利用GUIDE這一界面設(shè)計(jì)工具集 用戶不需要編寫任何代碼 即可以通過鼠標(biāo)的簡單拖拽就能迅速地產(chǎn)生各種GUI控件 并可以根據(jù)要求方便地修改它們的外形 大小 顏色等屬性 從而幫助用戶方便地設(shè)計(jì)出各種符合要求的圖形用戶界面程序 GUI 此外 比較復(fù)雜的MATLAB程序都是由多個(gè)M文件組成的 例如 一個(gè)應(yīng)用程序有一個(gè)主函數(shù)M文件 主函數(shù)M文件又要調(diào)用其它的兩個(gè)M文件 而這兩個(gè)M文件又可能會(huì)調(diào)用其它的M文件 從而構(gòu)成比較復(fù)雜的應(yīng)用程序 對(duì)由多個(gè)M文件組成的應(yīng)用程序的編譯也是用戶需要掌握的 三 對(duì)由GUIDE創(chuàng)建的GUI程序編譯為可獨(dú)立運(yùn)行的程序 104 2020 4 20 2 編程要點(diǎn)MATLAB編譯器在編譯的過程中會(huì)有 依存關(guān)系檢查 這一步驟 MATLAB編譯器會(huì)對(duì)用戶用于編譯的M文件進(jìn)行檢查 確定用戶提供的M文件需要調(diào)用哪些M文件以及這些M文件又要調(diào)用哪些M文件 等等 此外 MATLAB編譯器也分析用戶提供的M文件還要調(diào)用哪些MATLAB內(nèi)置函數(shù)以及MATLAB對(duì)象 在依存關(guān)系檢查中創(chuàng)建的MATLAB文件 M文件和MEX文件 列表用于創(chuàng)建CTF文檔 CTF文檔包含應(yīng)用程序正常執(zhí)行所需要的文件 這些文件被加密并壓縮到單個(gè)文件中以方便部署 目錄信息也包含在其中 以確保目錄中的文件能被正確地安裝到目標(biāo)計(jì)算機(jī) 因此 在對(duì)包含多個(gè)M文件的MATLAB程序進(jìn)行編譯時(shí) 用戶只需在mcc命令行中包含主函數(shù)M文件即可 MATLAB編譯器會(huì)自動(dòng)查找所需要的其它M文件 不需要用戶逐個(gè)進(jìn)行編譯 用戶也不需要擔(dān)心會(huì)有哪些函數(shù)會(huì)被遺漏 由GUIDE創(chuàng)建的應(yīng)用程序包括M文件和FIG文件 用戶在利用MATLAB編譯器進(jìn)行編譯時(shí) 其編譯方法與普通的M文件的編譯是一樣的 如果存在多個(gè)M文件 則只需對(duì)主M文件進(jìn)行編譯 105 2020 4 20 1 案例背景C語言是目前世界上流行 使用最廣泛的面向過程的高級(jí)程序設(shè)計(jì)語言 許多應(yīng)用軟件都是用C語言編寫的 C語言提供了基本的函數(shù)庫 程序員可以使用這些函數(shù)庫來完成復(fù)雜的運(yùn)算 處理大量的數(shù)值數(shù)據(jù) 但有時(shí) 這些基本的函數(shù)往往不能滿足要求 需要程序員來編寫高級(jí)函數(shù)來完成所需的運(yùn)算 如矩陣運(yùn)算等 而MATLAB具有幾百個(gè)數(shù)學(xué)函數(shù) 可以完成數(shù)值分析 模擬與運(yùn)算等強(qiáng)大的功能 因此 如果能在C開發(fā)環(huán)境中調(diào)用MATLAB強(qiáng)大的函數(shù)庫 則能為應(yīng)用程序的開發(fā)提供很大的方便 可以利用MATLAB編譯器將MA

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論