




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1九、九、MATLAB編譯器和編譯器和Notebookv編譯編譯器概述器概述v編譯編譯器的安裝和配置器的安裝和配置v創創建建MEX文件文件 v創創建獨立的外部程序建獨立的外部程序EXE文件文件vNotebook29.1 編譯器概述編譯器概述 MATLAB編譯器(The MATLAB Compiler,MCC)可以將M文件轉化為C或C源代碼,然后進一步編譯鏈接成MEX文件或可執行程序或共享庫文件。編譯后可以大大提高程序的運行效率,甚至可以脫離MATLAB環境運行程序。 編譯器主要包括: 將C源碼文件生成MEX文件的mex編譯器; 將C源碼文件生成可獨立運行文件的mbuild編譯器; 可以將M文件
2、轉換成C源碼文件并調用mex或mbuild編譯器生成MEX文件或exe可執行程序的mcc編譯器。9.1.1 編譯器的功能編譯器的功能產生源代碼,進而生成產生源代碼,進而生成MEX文件文件。 MEX文件可以提高運行速度,并且可以隱藏文件算法,避免非法修改源文件。2 . 產生產生C或或C源碼,進而生成獨立的外部應用程序(源碼,進而生成獨立的外部應用程序(EXE文件)。文件)。 該程序無需MATLAB環境支持,如果源M文件使用了繪圖指令,則需要圖形庫支持。3. 產生產生C MEX的的S函數。函數。加快Simulink中自定義的S函數模塊的運行速度。4. 產生產生C共享庫(動態鏈接庫、共享庫(動態鏈接
3、庫、DLL)或)或C+靜態庫。靜態庫。 它們的使用無需MATLAB環境支持,但需要MATLAB的數學庫。39.1.2 編譯器的局限性編譯器的局限性不支持M腳本文件的編譯。不支持用戶自定義的對象。不支持eval,input,inline等函數。不支持Java接口。9.2.1 配置配置MATLAB編譯器的前提準備編譯器的前提準備1. 計算機必須安裝有計算機必須安裝有ANSIC/C+編譯器。編譯器。下面任何一種C/C+編譯器均可。l Microsoft Visual C/C+5.0以上版本。l Borland C/C+5.0以上版本。l LCC C (MATLAB自帶,只能用于生成MEX文件)。2.
4、 在安裝在安裝MATLAB時,選中組件時,選中組件l MATLAB Compilerl C/C+ Math Libraryl MATLAB C/C+ Graphics Library9.2 編譯器的安裝和配置編譯器的安裝和配置49.2.2 為產生為產生MEX文件進行預配置文件進行預配置 要實現從M文件到MEX文件的轉換,就必須先對M編譯器進行正確設置。預配置包括兩個過程:一是根據外部編譯器的類型、軟件位置對M編譯器進行設置;二是利用MATLAB提供的標準文件對用戶設置加以驗證。1. 對對MATLAB編譯器應用程序編譯器應用程序mex的配置的配置啟動配置:在MATLAB指令窗口運行mex-set
5、up 命令mex-setupSelect a compiler: 1 Lcc C version 2.4 in C:MATLAB6P5syslcc 2 Microsoft Visual C/C+ version 6.0 in D:Program FilesMicrosoft Visual Studio 0 None Compiler:2The default options file: D:Documents and SettingsslluApplication DataMathWorksMATLABR13mexopts.bat is being updated from C:MATLAB6
6、P5BINWIN32mexoptsmsvc60opts.bat. Installing the MATLAB Visual Studio add-in . Updated D:Program FilesMicrosoft Visual Studiocommonmsdev98templateMATLABWizard.awx from C:MATLAB6P5BINWIN32MATLABWizard.awx 52. 驗證配置的正確性驗證配置的正確性 驗證分兩步進行:首先驗證mex命令是否可以將C源碼轉換成MEX文件;然后再驗證mcc命令是否可以將M文件轉換成MEX文件。mcc命令可以在M文件轉換成C
7、源碼后,自動調用mex命令,將C源碼轉換成MEX文件。 利用MATLAB自帶的yprime.c和yprime.m來驗證mex和mcc命令。mex my_yprime.c %由my_yprime.c文件生成my_yprime.dll文件my_yprime(1,1:4) %運行my_yprime.dll文件ans= 2.0000 8.9685 4.000 -1.0947(1)驗證mex應用程序 先將externexamplemex目錄下的yprime.c文件復制到自己的目錄下,并改名為my_yprime.c。which my_yprime %獲得my_yprime.dll文件的位置信息D:Docu
8、ments and SettingsslluMy DocumentsMATLABMYFILEmexmy_yprime.dllclear my_yprime.dll %刪除my_yprime.dll文件(2)驗證mcc應用程序 先將externexamplemex目錄下的yprime.m文件復制到自己的目錄下,并改名為my_yprime_m.m。6mcc-x my_yprime_mmy_yprime_m(1,1:4)ans= 2.0000 8.9685 4.000 -1.0947which my_yprime_mD:Documents and SettingsslluMy DocumentsMA
9、TLABMYFILEmexmy_yprime_m.dll9.2.2 為產生獨立外部應用程序進行預配置為產生獨立外部應用程序進行預配置 要實現從M文件到獨立外部應用程序的轉換,也必須先對MATLAB編譯器進行正確設置。預配置包括兩個過程:一是根據外部編譯器的類型、軟件位置對MATLAB編譯器進行設置,同時對MATLAB C數學函數庫進行選擇;二是利用MATLAB提供的標準文件對用戶設置加以驗證。1. 對對MATLAB編譯器應用程序編譯器應用程序mbuild的配置的配置啟動配置:在MATLAB指令窗口運行mbuild-setup 命令mbuild-setupSelect a compiler: 1
10、 Lcc C version 2.4 in C:MATLAB6P5syslcc 2 Microsoft Visual C/C+ version 6.0 in D:Program FilesMicrosoft Visual Studio 0 None Compiler: 2 The default options file: D:Documents and SettingsslluApplication DataMathWorksMATLABR13compopts.bat is being updated from C:MATLAB6P5BINWIN32mbuildoptsmsvc60compp
11、.bat. 72. 驗證配置的正確性驗證配置的正確性 驗證分兩步進行:首先驗證mbuild命令是否可以將C源碼轉換成EXE文件;然后再驗證mcc命令是否可以將M文件轉換成EXE文件。mcc命令可以在M文件轉換成C源碼后,自動調用mbuild命令,將C源碼轉換成EXE文件。 利用MATLAB自帶的ex1.c和hello.m來驗證mbuild和mcc命令。(1)驗證mex應用程序 先將externexamplecmath目錄下的ex1.c文件復制到自己的目錄下,并改名為my_ex1.c。mbuild my_ex1.c %生成my_ex1.exe文件在Windows的DOS窗口運行my_ex1.ex
12、e文件查看其正確性。(2)驗證mcc應用程序 先將externexamplecompiler目錄下的hello.m文件復制到自己的目錄下,并改名為my_hello.m。mcc -p my_hello.m在Windows的DOS窗口運行my_hello.exe文件查看其正確性。D:Documents and SettingsslluMy DocumentsMATLABMYFILEmexmy_ex1 1 3 5 2 4 6 1.0000+7.0000i 4.0000+10.0000i 2.0000+8.0000i 5.0000+11.0000i 3.0000+9.0000i 6.0000+12.0
13、000iD:Documents and SettingsslluMy DocumentsMATLABMYFILEmexmy_ex1Hello,World89.3 創建創建MEX文件文件 創建創建MEX文件有兩種方法文件有兩種方法:l 利用C源碼編輯器編寫C語言MEX文件,經過mex命令編譯鏈接得到MEX文件。l 利用M文件編輯器編寫M函數文件,經過mcc命令編譯鏈接得到MEX文件。 MEX文件的優點文件的優點:l 運行速度快,利用C代碼實現循環體要比MATLAB快很多;l 對于已存在的C或FORTRAN子程序,可以通過MEX文件在MATLAB環境中直接調用,而不必重新編寫M文件 ;l 對于A/
14、D、D/A卡,或其它PC硬件,可以直接用MEX文件進行訪問 ;l 利用MEX文件,可以使用如Windows用戶圖形界面等資源。 9.3.1 C語言語言MEX文件的構成文件的構成 程序的構成主要由入口子程序和計算功能子程序兩部分組成。void mexFunction( int nlhs, mxArray *plhs, int nrhs, const mxArray*prhs ) /*用來完成MATLAB與計算子程序之間通信任務的代碼*/ (1) 入口子程序 入口子程序必須是mexFunction,其構成形式為: mexFunction函數的參數含義為:nrhs:為輸入參數的數目。prhs:為輸入
15、參數數組,是指針數組。nlhs:為輸出參數的數目。plhs:為輸出參數數組,是指針數組。 9入口子程序的作用是在MATLAB系統與被調用的外部子程序之間建立通信聯系。 (2) 計算功能子程序 計算功能子程序包含所有的實際需要完成的功能源代碼,可以是用戶以前所編寫的算法和程序,以函數的形式存在。 C語言MEX文件必須包含mex.h庫:include”mex.h”。mex.h庫中包含了C語言MEX文件所需要的mex-函數和matrix.h庫(定義了mx-函數)。 mex-和mx-函數是MATLAB提供與外界程序接口的函數。mx-函數用來實現MATLAB的矩陣操作;mex-函數用來實現從MATLAB
16、環境中獲取矩陣數據并返回信息。9.3.2 C語言語言MEX文件的建立文件的建立timestwo.c#include mex.h“/*計算功能子程序timestwo,計算一個數的兩倍*/void timestwo(double y, double x) y0 = 2.0*x0;/*入口子程序mexFunction*/void mexFunction( int nlhs, mxArray *plhs, int nrhs, const mxArray *prhs ) double *x,*y; int mrows,ncols;10/* 檢查輸入輸出參數 */ if(nrhs!=1) mexErrMs
17、gTxt(One input required.); else if(nlhs1) mexErrMsgTxt(Too many output arguments); /* 輸入只能是一個雙精度型的實數*/ mrows = mxGetM(prhs0); ncols = mxGetN(prhs0); if( !mxIsDouble(prhs0) | mxIsComplex(prhs0) | !(mrows=1 & ncols=1) ) mexErrMsgTxt(Input must be a noncomplex scalar double.); /* 為輸出參數創建矩陣,輸出指針指向該矩
18、陣 */ plhs0 = mxCreateDoubleMatrix(mrows,ncols, mxREAL); /* 輸入指針輸出指針賦值 */ x = mxGetPr(prhs0); y = mxGetPr(plhs0); /* 調用功能子程序 */timestwo(y,x);在MATLAB命令窗口運行mex timestwo.cy=timestwo(3)y= 6119.3.3 由由M文件創建文件創建C MEX文件文件 M腳本文件不能編譯成MEX文件,必須把M腳本文件改寫M函數文件才能進行編譯。 利用MATLAB編譯器來由M函數文件創建MEX文件,使用“mcc x”命令。 %circle.m
19、function circle(x,y,r,varargin) if nargin3 flag=varargin1;endif flag fill(x1*r+x,y1*r+y,b)endaxis square;在MATLAB命令窗口運行mcc x circle.mcirclecircle(1,1,2,1)129.4 創建獨立的外部程序創建獨立的外部程序EXE文件文件 MEX文件只能在MATLAB環境中運行;而EXE文件可以獨立于MATLAB環境運行。 用來創建獨立應用程序的源代碼可以是M文件、C語言文件或者這些文件的組合。不管是哪一種文件格式,都應該包含有主函數,如C語言的main函數。 得到
20、的exe文件如果要正常運行,需要下列文件:l mbuild編譯得到的bin目錄下的所有文件;l 所調用的MEX文件;l MATLAB提供的數學庫;l MATLAB提供的圖形庫。mcc指令的典型調用格式(可以利用mcc-?或help mcc查詢幫助):mcc -x filename1 filename2 由M函數文件得到MEX文件filename1.dllmcc -m filename 由不包含繪圖指令的M文件得到可執行的exe文件(c)3. mcc -p filename 由不包含繪圖指令的M文件得到可執行的exe文件(c+)4. mcc -B sgl filename 由含繪圖指令的M文件得
21、到可執行的exe文件(c)5. mcc -B sglcpp filename 由包含繪圖指令的M文件得到可執行的exe文件(c+獨立應用程序)注意:注意:“”與與mcc之間必須有空格!之間必須有空格!13main.m mrank.m%main.m function mainr=mrank(5)%mrank.mfunction r=mrank(n)%向量向量r的每一個元素代表了一個魔方方陣的秩的每一個元素代表了一個魔方方陣的秩r=zeros(n,1);for k=1:n r(k)=rank(magic(k);end在MATLAB指令窗口運行命令mcc -m main mrank %由M文件生成e
22、xe文件在Windows的DOS窗口運行D:Documents and SettingsslluMy DocumentsMATLABMYFILEmexmainr= 1 2 3 3 514circle_main.m circle_fun.m%circle_main.mfunction circle_maincircle_fun(1,1,2,1)%circle_fun.mfunction circle_fun(x,y,r,varargin) if nargin3 flag=varargin1;endif flag fill(x1*r+x,y1*r+y,b)endaxis square;在MATLA
23、B指令窗口運行命令mcc B sgl circle_main在DOS窗口運行:D:Documents and SettingsslluMy DocumentsMATLABMYFILEmexcircle_main159.5 Notebook Notebook(筆記本)是MATLAB與Microsoft Word的完美結合,使用戶能在Word環境下靈活地使用MATLAB的數學運算和可視化功能,營造一個融文字處理、科學計算、工程設計于一體地工作環境。9.5.1 Notebook的安裝的安裝 啟動MATLAB后,在命令窗口中運行指令note-setup根據自己計算機所用Word的版本等,在提示下操作
24、,直到出現“Notebook setup is complete”,則表示安裝結束。 9.5.2 Notebook的啟動的啟動 1. 創建創建M-book文件文件(1) 從Word中啟動Notebook 選擇Word窗口的菜單“文件”“新建”,在出現的對話框中,選擇“m-book”,則出現如圖所示的新建對話框,選擇“m-book”圖標,按“確定”按鈕。當保存文件時,默認的文件名為“The MATLAB Notebook v1.doc”。 16(2) 從MATLAB中啟動Notebook 在MATLAB命令窗口輸入“notebook”命令,就可以啟動Notebook。notebook打開一個新的
25、M-book文檔notebook FileName打開已存在的M-book文件 FileName應包括文件的完整路徑和文件名。 2. M-book的界面的界面M-book的界面比普通的Word多一個“Notebook”菜單 。9.5.3 Notebook的使用的使用 1. 輸入細胞(群)的創建和運行輸入細胞(群)的創建和運行在Notebook中,凡參與Word和MATLAB之間信息交換的部分,就稱為”細胞(群)細胞(群)“。(1) 只創建不運行輸入細胞(群) 在英文狀態下按普通的文本輸入方式,輸入MATLAB命令,可以是獨立行或嵌在文本中,然后用光標選中,按組合鍵“Alt-D”,或選擇菜單“N
26、otebook”“Define Input Cell”,則所選中的文本形式命令就變成了輸入細胞。(2) 創建并同時運行輸入細胞 在英文狀態下按普通的文本輸入方式,輸入MATLAB命令,然后用光標選中,按組合鍵“Ctrl-Enter”,或選擇菜單“Notebook”“Evaluate Cell”,則所選中的文本形式命令就會自動變成輸入細胞,并得出運算結果,即輸出細胞。172. 自初始化細胞及其應用自初始化細胞及其應用 自初始化細胞(AutoInit Cell)與輸入細胞唯一不同是:自初始化細胞會在用戶啟動Notebook時被自動送去運算,而輸入細胞則不具備這種功能。 創建自初始細胞的方法是先將文
27、本形式的MATLAB命令或已存在的輸入細胞用光標選中,然后選擇菜單“Notebook”“Define AutoInit Cell”,則選中的文本形式MATLAB命令就會自動變成AutoInit 格式。 3. 輸出細胞輸出細胞 輸出細胞是MATLAB的輸出結果,包括數據、圖形和出錯信息。 輸出數據的有效數字、圖形的大小都可以借助“Notebook”“Notebook Options”菜單項打開的對話框進行設置。(1)自初始化細胞的創建 為了避免其它文件或命令窗口中變量的改變影響該文件,保證文件輸入輸出數據的一致性,可以用“clear”命令作為該文件的第一個自初始化細胞。 (2)工作內存的初始化4. 計算區計算區 計算區(Calc Zone)是一個由文本、輸入細胞和輸出細胞組成的連續區,用于實現某個具體的問題。 創建計算區的方法是:先選定一個包含文本、輸入細胞和輸出細胞的連續區,然后選擇菜單“Notebook”“Define Calc Zone”;要運行計算區,可將光標置于計算區的任何位置,然后選擇菜單 “Notebook”“Evaluate Calc Zone”。 185. 取消定義細胞(群)取消定義細胞(群) 取消定義細胞的方法是,先選定細胞,然后選擇菜單“Notebook”“Undefine Cells”,或
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高標準廠房租賃安全生產及環境保護管理協議
- 餐飲公司股東投資收益分配合同
- 拆除工程安全責任及補償協議范本
- 車輛租賃平臺傭金分成合同
- 互聯網教育代理記帳與課程資源整合合同
- 資源開發項目參股合作協議范本
- 產權拍賣合同范本
- 餐飲店拆伙退伙協議書(合同解除原因)
- 美食街特色餐飲攤位租賃及食品安全保障合同
- 特種礦產資源采礦權出讓與科研開發合同
- fca外貿合同協議
- 2024年廣東省廣州市初中學業水平考試生物學試題(含答案)
- DB32-T 5080-2025 工程竹結構建筑技術規程
- 《重大電力安全隱患判定標準(試行)》知識培訓
- 第十五講新時代與中華民族共同體建設2012- -中華民族共同體概論專家大講堂課件
- 《投標文件產品質量保證措施:方案與實施》
- 惡劣天氣期間的安全檢查制度
- 煤礦應聘筆試題庫及答案
- 2025年電梯考試試題及答案
- 海南大學2019-2020學年第二學期試卷科目《概率論與數理統計》試題
- 挖掘機操作與安全事項
評論
0/150
提交評論