版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1九、九、MATLAB編譯器和編譯器和Notebookv編譯編譯器概述器概述v編譯編譯器的安裝和配置器的安裝和配置v創(chuàng)創(chuàng)建建MEX文件文件 v創(chuàng)創(chuàng)建獨立的外部程序建獨立的外部程序EXE文件文件vNotebook29.1 編譯器概述編譯器概述 MATLAB編譯器(The MATLAB Compiler,MCC)可以將M文件轉(zhuǎn)化為C或C源代碼,然后進一步編譯鏈接成MEX文件或可執(zhí)行程序或共享庫文件。編譯后可以大大提高程序的運行效率,甚至可以脫離MATLAB環(huán)境運行程序。 編譯器主要包括: 將C源碼文件生成MEX文件的mex編譯器; 將C源碼文件生成可獨立運行文件的mbuild編譯器; 可以將M文件
2、轉(zhuǎn)換成C源碼文件并調(diào)用mex或mbuild編譯器生成MEX文件或exe可執(zhí)行程序的mcc編譯器。9.1.1 編譯器的功能編譯器的功能產(chǎn)生源代碼,進而生成產(chǎn)生源代碼,進而生成MEX文件文件。 MEX文件可以提高運行速度,并且可以隱藏文件算法,避免非法修改源文件。2 . 產(chǎn)生產(chǎn)生C或或C源碼,進而生成獨立的外部應(yīng)用程序(源碼,進而生成獨立的外部應(yīng)用程序(EXE文件)。文件)。 該程序無需MATLAB環(huán)境支持,如果源M文件使用了繪圖指令,則需要圖形庫支持。3. 產(chǎn)生產(chǎn)生C MEX的的S函數(shù)。函數(shù)。加快Simulink中自定義的S函數(shù)模塊的運行速度。4. 產(chǎn)生產(chǎn)生C共享庫(動態(tài)鏈接庫、共享庫(動態(tài)鏈接
3、庫、DLL)或)或C+靜態(tài)庫。靜態(tài)庫。 它們的使用無需MATLAB環(huán)境支持,但需要MATLAB的數(shù)學(xué)庫。39.1.2 編譯器的局限性編譯器的局限性不支持M腳本文件的編譯。不支持用戶自定義的對象。不支持eval,input,inline等函數(shù)。不支持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 為產(chǎn)生為產(chǎn)生MEX文件進行預(yù)配置文件進行預(yù)配置 要實現(xiàn)從M文件到MEX文件的轉(zhuǎn)換,就必須先對M編譯器進行正確設(shè)置。預(yù)配置包括兩個過程:一是根據(jù)外部編譯器的類型、軟件位置對M編譯器進行設(shè)置;二是利用MATLAB提供的標準文件對用戶設(shè)置加以驗證。1. 對對MATLAB編譯器應(yīng)用程序編譯器應(yīng)用程序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源碼轉(zhuǎn)換成MEX文件;然后再驗證mcc命令是否可以將M文件轉(zhuǎn)換成MEX文件。mcc命令可以在M文件轉(zhuǎn)換成C
7、源碼后,自動調(diào)用mex命令,將C源碼轉(zhuǎn)換成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應(yīng)用程序 先將externexamplemex目錄下的yprime.c文件復(fù)制到自己的目錄下,并改名為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應(yīng)用程序 先將externexamplemex目錄下的yprime.m文件復(fù)制到自己的目錄下,并改名為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 為產(chǎn)生獨立外部應(yīng)用程序進行預(yù)配置為產(chǎn)生獨立外部應(yīng)用程序進行預(yù)配置 要實現(xiàn)從M文件到獨立外部應(yīng)用程序的轉(zhuǎn)換,也必須先對MATLAB編譯器進行正確設(shè)置。預(yù)配置包括兩個過程:一是根據(jù)外部編譯器的類型、軟件位置對MATLAB編譯器進行設(shè)置,同時對MATLAB C數(shù)學(xué)函數(shù)庫進行選擇;二是利用MATLAB提供的標準文件對用戶設(shè)置加以驗證。1. 對對MATLAB編譯器應(yīng)用程序編譯器應(yīng)用程序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源碼轉(zhuǎn)換成EXE文件;然后再驗證mcc命令是否可以將M文件轉(zhuǎn)換成EXE文件。mcc命令可以在M文件轉(zhuǎn)換成C源碼后,自動調(diào)用mbuild命令,將C源碼轉(zhuǎn)換成EXE文件。 利用MATLAB自帶的ex1.c和hello.m來驗證mbuild和mcc命令。(1)驗證mex應(yīng)用程序 先將externexamplecmath目錄下的ex1.c文件復(fù)制到自己的目錄下,并改名為my_ex1.c。mbuild my_ex1.c %生成my_ex1.exe文件在Windows的DOS窗口運行my_ex1.ex
12、e文件查看其正確性。(2)驗證mcc應(yīng)用程序 先將externexamplecompiler目錄下的hello.m文件復(fù)制到自己的目錄下,并改名為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 創(chuàng)建創(chuàng)建MEX文件文件 創(chuàng)建創(chuàng)建MEX文件有兩種方法文件有兩種方法:l 利用C源碼編輯器編寫C語言MEX文件,經(jīng)過mex命令編譯鏈接得到MEX文件。l 利用M文件編輯器編寫M函數(shù)文件,經(jīng)過mcc命令編譯鏈接得到MEX文件。 MEX文件的優(yōu)點文件的優(yōu)點:l 運行速度快,利用C代碼實現(xiàn)循環(huán)體要比MATLAB快很多;l 對于已存在的C或FORTRAN子程序,可以通過MEX文件在MATLAB環(huán)境中直接調(diào)用,而不必重新編寫M文件 ;l 對于A/
14、D、D/A卡,或其它PC硬件,可以直接用MEX文件進行訪問 ;l 利用MEX文件,可以使用如Windows用戶圖形界面等資源。 9.3.1 C語言語言MEX文件的構(gòu)成文件的構(gòu)成 程序的構(gòu)成主要由入口子程序和計算功能子程序兩部分組成。void mexFunction( int nlhs, mxArray *plhs, int nrhs, const mxArray*prhs ) /*用來完成MATLAB與計算子程序之間通信任務(wù)的代碼*/ (1) 入口子程序 入口子程序必須是mexFunction,其構(gòu)成形式為: mexFunction函數(shù)的參數(shù)含義為:nrhs:為輸入?yún)?shù)的數(shù)目。prhs:為輸入
15、參數(shù)數(shù)組,是指針數(shù)組。nlhs:為輸出參數(shù)的數(shù)目。plhs:為輸出參數(shù)數(shù)組,是指針數(shù)組。 9入口子程序的作用是在MATLAB系統(tǒng)與被調(diào)用的外部子程序之間建立通信聯(lián)系。 (2) 計算功能子程序 計算功能子程序包含所有的實際需要完成的功能源代碼,可以是用戶以前所編寫的算法和程序,以函數(shù)的形式存在。 C語言MEX文件必須包含mex.h庫:include”mex.h”。mex.h庫中包含了C語言MEX文件所需要的mex-函數(shù)和matrix.h庫(定義了mx-函數(shù))。 mex-和mx-函數(shù)是MATLAB提供與外界程序接口的函數(shù)。mx-函數(shù)用來實現(xiàn)MATLAB的矩陣操作;mex-函數(shù)用來實現(xiàn)從MATLAB
16、環(huán)境中獲取矩陣數(shù)據(jù)并返回信息。9.3.2 C語言語言MEX文件的建立文件的建立timestwo.c#include mex.h“/*計算功能子程序timestwo,計算一個數(shù)的兩倍*/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/* 檢查輸入輸出參數(shù) */ if(nrhs!=1) mexErrMs
17、gTxt(One input required.); else if(nlhs1) mexErrMsgTxt(Too many output arguments); /* 輸入只能是一個雙精度型的實數(shù)*/ mrows = mxGetM(prhs0); ncols = mxGetN(prhs0); if( !mxIsDouble(prhs0) | mxIsComplex(prhs0) | !(mrows=1 & ncols=1) ) mexErrMsgTxt(Input must be a noncomplex scalar double.); /* 為輸出參數(shù)創(chuàng)建矩陣,輸出指針指向該矩
18、陣 */ plhs0 = mxCreateDoubleMatrix(mrows,ncols, mxREAL); /* 輸入指針輸出指針賦值 */ x = mxGetPr(prhs0); y = mxGetPr(plhs0); /* 調(diào)用功能子程序 */timestwo(y,x);在MATLAB命令窗口運行mex timestwo.cy=timestwo(3)y= 6119.3.3 由由M文件創(chuàng)建文件創(chuàng)建C MEX文件文件 M腳本文件不能編譯成MEX文件,必須把M腳本文件改寫M函數(shù)文件才能進行編譯。 利用MATLAB編譯器來由M函數(shù)文件創(chuàng)建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 創(chuàng)建獨立的外部程序創(chuàng)建獨立的外部程序EXE文件文件 MEX文件只能在MATLAB環(huán)境中運行;而EXE文件可以獨立于MATLAB環(huán)境運行。 用來創(chuàng)建獨立應(yīng)用程序的源代碼可以是M文件、C語言文件或者這些文件的組合。不管是哪一種文件格式,都應(yīng)該包含有主函數(shù),如C語言的main函數(shù)。 得到
20、的exe文件如果要正常運行,需要下列文件:l mbuild編譯得到的bin目錄下的所有文件;l 所調(diào)用的MEX文件;l MATLAB提供的數(shù)學(xué)庫;l MATLAB提供的圖形庫。mcc指令的典型調(diào)用格式(可以利用mcc-?或help mcc查詢幫助):mcc -x filename1 filename2 由M函數(shù)文件得到MEX文件filename1.dllmcc -m filename 由不包含繪圖指令的M文件得到可執(zhí)行的exe文件(c)3. mcc -p filename 由不包含繪圖指令的M文件得到可執(zhí)行的exe文件(c+)4. mcc -B sgl filename 由含繪圖指令的M文件得
21、到可執(zhí)行的exe文件(c)5. mcc -B sglcpp filename 由包含繪圖指令的M文件得到可執(zhí)行的exe文件(c+獨立應(yīng)用程序)注意:注意:“”與與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的完美結(jié)合,使用戶能在Word環(huán)境下靈活地使用MATLAB的數(shù)學(xué)運算和可視化功能,營造一個融文字處理、科學(xué)計算、工程設(shè)計于一體地工作環(huán)境。9.5.1 Notebook的安裝的安裝 啟動MATLAB后,在命令窗口中運行指令note-setup根據(jù)自己計算機所用Word的版本等,在提示下操作
24、,直到出現(xiàn)“Notebook setup is complete”,則表示安裝結(jié)束。 9.5.2 Notebook的啟動的啟動 1. 創(chuàng)建創(chuàng)建M-book文件文件(1) 從Word中啟動Notebook 選擇Word窗口的菜單“文件”“新建”,在出現(xiàn)的對話框中,選擇“m-book”,則出現(xiàn)如圖所示的新建對話框,選擇“m-book”圖標,按“確定”按鈕。當(dāng)保存文件時,默認的文件名為“The MATLAB Notebook v1.doc”。 16(2) 從MATLAB中啟動Notebook 在MATLAB命令窗口輸入“notebook”命令,就可以啟動Notebook。notebook打開一個新的
25、M-book文檔notebook FileName打開已存在的M-book文件 FileName應(yīng)包括文件的完整路徑和文件名。 2. M-book的界面的界面M-book的界面比普通的Word多一個“Notebook”菜單 。9.5.3 Notebook的使用的使用 1. 輸入細胞(群)的創(chuàng)建和運行輸入細胞(群)的創(chuàng)建和運行在Notebook中,凡參與Word和MATLAB之間信息交換的部分,就稱為”細胞(群)細胞(群)“。(1) 只創(chuàng)建不運行輸入細胞(群) 在英文狀態(tài)下按普通的文本輸入方式,輸入MATLAB命令,可以是獨立行或嵌在文本中,然后用光標選中,按組合鍵“Alt-D”,或選擇菜單“N
26、otebook”“Define Input Cell”,則所選中的文本形式命令就變成了輸入細胞。(2) 創(chuàng)建并同時運行輸入細胞 在英文狀態(tài)下按普通的文本輸入方式,輸入MATLAB命令,然后用光標選中,按組合鍵“Ctrl-Enter”,或選擇菜單“Notebook”“Evaluate Cell”,則所選中的文本形式命令就會自動變成輸入細胞,并得出運算結(jié)果,即輸出細胞。172. 自初始化細胞及其應(yīng)用自初始化細胞及其應(yīng)用 自初始化細胞(AutoInit Cell)與輸入細胞唯一不同是:自初始化細胞會在用戶啟動Notebook時被自動送去運算,而輸入細胞則不具備這種功能。 創(chuàng)建自初始細胞的方法是先將文
27、本形式的MATLAB命令或已存在的輸入細胞用光標選中,然后選擇菜單“Notebook”“Define AutoInit Cell”,則選中的文本形式MATLAB命令就會自動變成AutoInit 格式。 3. 輸出細胞輸出細胞 輸出細胞是MATLAB的輸出結(jié)果,包括數(shù)據(jù)、圖形和出錯信息。 輸出數(shù)據(jù)的有效數(shù)字、圖形的大小都可以借助“Notebook”“Notebook Options”菜單項打開的對話框進行設(shè)置。(1)自初始化細胞的創(chuàng)建 為了避免其它文件或命令窗口中變量的改變影響該文件,保證文件輸入輸出數(shù)據(jù)的一致性,可以用“clear”命令作為該文件的第一個自初始化細胞。 (2)工作內(nèi)存的初始化4. 計算區(qū)計算區(qū) 計算區(qū)(Calc Zone)是一個由文本、輸入細胞和輸出細胞組成的連續(xù)區(qū),用于實現(xiàn)某個具體的問題。 創(chuàng)建計算區(qū)的方法是:先選定一個包含文本、輸入細胞和輸出細胞的連續(xù)區(qū),然后選擇菜單“Notebook”“Defin
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘭州資源環(huán)境職業(yè)技術(shù)大學(xué)《液壓流體力學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 濟寧職業(yè)技術(shù)學(xué)院《傳播效果監(jiān)測》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖南幼兒師范高等專科學(xué)校《結(jié)構(gòu)耐久性理論》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖南工業(yè)大學(xué)科技學(xué)院《嬰幼兒藝術(shù)發(fā)展與教育》2023-2024學(xué)年第一學(xué)期期末試卷
- 衡陽科技職業(yè)學(xué)院《地理信息系統(tǒng)A》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖南交通職業(yè)技術(shù)學(xué)院《生物醫(yī)藥文獻檢索和專業(yè)英語》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江師范大學(xué)《發(fā)酵工程制造技術(shù)及應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 鄭州體育職業(yè)學(xué)院《工業(yè)設(shè)計專業(yè)導(dǎo)論》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江工貿(mào)職業(yè)技術(shù)學(xué)院《短視頻策劃與運營》2023-2024學(xué)年第一學(xué)期期末試卷
- 食品中重金屬殘留的控制手段
- 2024-2025學(xué)年成都高新區(qū)七上數(shù)學(xué)期末考試試卷【含答案】
- 定額〔2025〕1號文-關(guān)于發(fā)布2018版電力建設(shè)工程概預(yù)算定額2024年度價格水平調(diào)整的通知
- 2025年浙江杭州市西湖區(qū)專職社區(qū)招聘85人歷年高頻重點提升(共500題)附帶答案詳解
- 《數(shù)學(xué)廣角-優(yōu)化》說課稿-2024-2025學(xué)年四年級上冊數(shù)學(xué)人教版
- “懂你”(原題+解題+范文+話題+技巧+閱讀類素材)-2025年中考語文一輪復(fù)習(xí)之寫作
- 2025年景觀照明項目可行性分析報告
- 2025年江蘇南京地鐵集團招聘筆試參考題庫含答案解析
- 2025年度愛讀書學(xué)長參與的讀書項目投資合同
- 電力系統(tǒng)分析答案(吳俊勇)(已修訂)
- 化學(xué)-河北省金太陽質(zhì)檢聯(lián)盟2024-2025學(xué)年高三上學(xué)期12月第三次聯(lián)考試題和答案
- 期末復(fù)習(xí)試題(試題)-2024-2025學(xué)年四年級上冊數(shù)學(xué) 北師大版
評論
0/150
提交評論