




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第四章MATLAB編程基礎(chǔ)
4.1概述4.2流程控制4.3腳本文件4.4函數(shù)文件4.5M文件調(diào)試4.6M文件性能分析
4.1概述
MALTLAB的函數(shù)主要有兩類:
(1)內(nèi)建函數(shù):由MATLAB的內(nèi)核提供的,能夠完成基本的運(yùn)算,例如三角函數(shù)、矩陣運(yùn)算的函數(shù)等。(2)函數(shù)文件:既包括C語言開發(fā)的MEX函數(shù)文件,又包含了M函數(shù)文件。
為了方便編輯M文件,MATLAB提供了一個編輯器,叫做meditor,是系統(tǒng)默認(rèn)的M文件編輯器。運(yùn)行meditor方法:1.>>edit2.File——New——M-file3.單擊工具欄上4.2流程控制
使用結(jié)構(gòu)化的應(yīng)用程序設(shè)計方法可以使設(shè)計的程序結(jié)構(gòu)清晰、可讀性強(qiáng),能夠提高應(yīng)用程序的設(shè)計效率,增強(qiáng)程序的可維護(hù)性。結(jié)構(gòu)化的程序主要有三種基本的程序結(jié)構(gòu):1)順序結(jié)構(gòu):程序語句的簡單羅列,由上至下執(zhí)行2)選擇結(jié)構(gòu):依據(jù)判斷條件的結(jié)果選擇某一種方法解決某一個問題。3)循環(huán)結(jié)構(gòu):程序中某一條語句或多條語句重復(fù)多次運(yùn)行結(jié)構(gòu)。
1.選擇結(jié)構(gòu)(1)if語句基本語法結(jié)構(gòu)有三種:a.if(關(guān)系運(yùn)算表達(dá)式)c.if(關(guān)系運(yùn)算表達(dá)式a)MATLAB語句MATLAB語句Aendelseif(表達(dá)式b)b.if(關(guān)系運(yùn)算表達(dá)式)MATLAB語句BMATLAB語句Aelse(表達(dá)式c)else.MATLAB語句B.end.end(2)Switch語句語法:switch(表達(dá)式)case常量表達(dá)式a:MATLAB語句Acase常量表達(dá)式b:MATLAB語句B
...case常量表達(dá)式m:MATLAB語句Motherwise:MATLAB語句Nend注意:c語言中,每個case后必須有break,否則依次執(zhí)行符合條件語句后的每一個case分支。MATLAB中,僅執(zhí)行符合條件的那個case分支。2.循環(huán)語句
(1)while語句語法:while(表達(dá)式)MATLAB語句end(2)for語句語法:forindex=start:increment:endMATLAB語句end
例:分別使用while和for求解
解:使用while語句使用for語句i=1;sum=0sum=0;while(i<=1000)fori=1:1000sum=sum+1;sum=sum+1i=i+1;endendstr=[‘計算結(jié)果為:’,num2str(sum)];disp(str)注意:for循環(huán)使用了行向量方式控制索引值(即變量)的初始值和增量值,進(jìn)行循環(huán)運(yùn)算.
3.break語句和continue語句
break語句作用:在執(zhí)行循環(huán)體時,強(qiáng)迫終止并退出當(dāng)前循環(huán).continue語句作用:中斷本次循環(huán),跳轉(zhuǎn)到判斷條件語句處,繼續(xù)下一次的循環(huán).注意:在程序中使用break和continue語句改變程序的流程不是好的編程習(xí)慣,所以在編程時,盡量不使用上述兩語句.4.提高運(yùn)算性能
(1)向量化運(yùn)算:不要使用循環(huán)結(jié)構(gòu)操作矩陣的元素,應(yīng)直接使用矩陣元素的索引或者矩陣運(yùn)算的函數(shù).盡量將使用while循環(huán)或者for循環(huán)的語句結(jié)構(gòu)轉(zhuǎn)換成等價的向量或者矩陣運(yùn)算,以提高程序的運(yùn)算速度.(2)預(yù)分配存儲空間:為了提高執(zhí)行,減少存儲空間的浪費(fèi).不同的數(shù)據(jù)類型有不同的內(nèi)存預(yù)分配函數(shù)(3)MATLAB加速器:改善循環(huán)運(yùn)行效率。
數(shù)據(jù)類型函數(shù)
例子數(shù)值數(shù)組zerosY=zeros(1:1000)元胞數(shù)組cellY=cell(2,3)Y{1,3}=zeros(1:1000)Y{2,3}=‘string’結(jié)構(gòu)數(shù)組struct,repmatY=repmat(struct(field,value),2,3)4.3腳本文件1.概念:
所謂腳本文件:就是由一系列的MATLAB指令和命令組成的純文本格式的M文件。執(zhí)行:文件中的指令或者命令按照出現(xiàn)在腳本文件中的順序依次執(zhí)行。特點(diǎn):沒有輸入?yún)?shù),沒有輸出參數(shù)2.腳本文件中常用的MATLAB指令指令說明pause暫停當(dāng)前M文件的運(yùn)行,按任意鍵繼續(xù)input等待用戶輸入keyboard暫停當(dāng)前M文件的運(yùn)行,并將程序控制權(quán)交給MATLAB命令行,可按回車鍵或輸入‘return’命令返回,M文件繼續(xù)運(yùn)行return返回當(dāng)前的函數(shù)或者命令行4.4函數(shù)文件1.基本結(jié)構(gòu):(1)函數(shù)定義行:以關(guān)鍵字function開頭如:functiony=average(x)(2)在線幫助:注釋行的第一行,最好用英語寫(3)注釋行:以%開頭的(4)M語言代碼注意:M文件名稱最好和函數(shù)名稱保持一致,若不一致,則調(diào)用函數(shù)的時候需要使用文件名稱而非函數(shù)名稱。2.輸入輸出參數(shù)
特點(diǎn):定義這些輸入輸出參數(shù)時,不需要指出變量的類型,MATLAB默認(rèn)這些參數(shù)為雙精度類型。在定義M函數(shù)文件的時候,可以不指明輸入輸出參數(shù)的個數(shù),可以通過varargin函數(shù)和varargout函數(shù)來編寫程序來完成參數(shù)的確定。function[out1,out2]=example1(a,b,varargin)function[I,j,varargout]=example2(x1,y1,x2,y2,flag)若需要判斷輸入,輸出參數(shù)的個數(shù)需要使用nargin函數(shù)和nargout函數(shù)。3.子函數(shù)和私有函數(shù)
(1)子函數(shù):如果在同一個M函數(shù)文件中包含了多個函數(shù),那么將出現(xiàn)在文件中的第一個M函數(shù)稱為主函數(shù)(primaryfunction),其余的函數(shù)稱為子函數(shù)(subfunction)。注意:a、子函數(shù)沒有在線幫助;b、子函數(shù)作用范圍有限,只能被那些在定義了子函數(shù)的M文件中定義的函數(shù)調(diào)用。(2)私有函數(shù):被放置在名稱為private的子目錄中的函數(shù)。創(chuàng)建:將需要設(shè)置為私有的函數(shù)拷貝到一個private子目錄中。注意:a、私有函數(shù)只能被那些位于private子目錄的上一層目錄中的函數(shù)調(diào)用。b、同名的函數(shù)中,私有函數(shù)優(yōu)先執(zhí)行。4.局部變量和全局變量(1)局部變量:在M函數(shù)內(nèi)部聲明并使用的變量。這些變量僅能在函數(shù)調(diào)用執(zhí)行期間被使用,一旦函數(shù)結(jié)束運(yùn)行,則這些變量占用的內(nèi)存空間就自動被釋放,變量的數(shù)值就不存在了。(2)全局變量:由關(guān)鍵字global聲明的變量。MATLAB將全局變量保存在特殊的工作空間進(jìn)行統(tǒng)一維護(hù)、管理。(3)保留變量:由關(guān)鍵字persistent聲明的變量這類變量在函數(shù)退出的時候不被釋放,保留上次退出的值。相當(dāng)于C語言中的static函數(shù)。(4)isglobal命令:用來測試本地變量與全局工作區(qū)中的變量是否由聯(lián)系,若沒有,則返回值為0。5.函數(shù)執(zhí)行規(guī)則
MATLAB解釋器解析命令按照一定的優(yōu)先級進(jìn)行:首先判斷輸入的命令是否為變量;若不是內(nèi)存的變量,判斷是否為MATLAB內(nèi)建函數(shù);若不是內(nèi)建函數(shù),則判斷是否為子函數(shù)。若不是子函數(shù),則判斷是否為私有函數(shù)。若不是私有函數(shù),則判斷是否為MATLAB搜索路徑中所包含的某個文件或函數(shù)。若在同一個路徑下發(fā)現(xiàn)同名的三種類型的文件MEX文件、P代碼文件和M代碼文件,則優(yōu)先執(zhí)行MEX文件,其次是P代碼文件,最后執(zhí)行M文件。注意:MATLAB內(nèi)存中的變量比函數(shù)具有較高的優(yōu)先級。4.5M文件調(diào)試
一般地來說,應(yīng)用程序的錯誤有兩類:一是語法錯誤,另一類是運(yùn)行時的錯誤。 M文件是一種解釋型語言,語法錯誤和運(yùn)行時的錯誤都只有在運(yùn)行過程中才能發(fā)現(xiàn),所以程序的調(diào)試往往是在程序無法得到正確結(jié)果時進(jìn)行程序修正的唯一手段。當(dāng)程序運(yùn)行過程中發(fā)生了錯誤或者警告,則程序運(yùn)行中斷,進(jìn)入調(diào)試狀態(tài)??梢栽O(shè)置斷點(diǎn)來進(jìn)行調(diào)試。
MATLAB也提供了一些指令用于進(jìn)行M文件的調(diào)試。指令說明dbclear清除已經(jīng)設(shè)置好的斷點(diǎn)dbcont繼續(xù)執(zhí)行dbdown/dbup修改當(dāng)前工作空間的上、下文關(guān)系dbquit退出調(diào)試狀態(tài)dbstack顯示當(dāng)前堆棧的狀態(tài)dbstatus顯示所有的已經(jīng)設(shè)置的斷點(diǎn)dbstep執(zhí)行應(yīng)用程序的一行或者多行代碼dbstop設(shè)置斷點(diǎn)dbtype顯示M文件代碼和相應(yīng)的行號6.M文件性能分析
使用M文件性能分析器有兩種方法:一是通過命令行,二是通過圖形用戶界面。打開圖形用戶界面方法:a.>>profviewb.Start—MATLAB—Profiler
填入要測試的文件后,單擊“StartProfiling”按鈕,則性能分析器通過運(yùn)行指定的指令得出程序運(yùn)行消耗的時間,并給出一個簡要的總結(jié)。profile函數(shù)的使用方法:語法說明profile
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物學(xué)科實(shí)驗(yàn)操作經(jīng)驗(yàn)交流計劃
- 畫出童年小班藝術(shù)表現(xiàn)計劃
- 優(yōu)化流程的年度工作框架計劃
- 班級心理素質(zhì)提升活動的案例分享計劃
- 2025年中國新型建材行業(yè)市場競爭格局及投資方向研究報告(智研咨詢)
- 2025年鐵紅項(xiàng)目建議書
- 2025年系列自動遙測氣象站項(xiàng)目合作計劃書
- 汽車零件互換性規(guī)則設(shè)定
- 構(gòu)建穩(wěn)定可靠的數(shù)據(jù)庫同步體系
- 三國演義的英雄氣概讀后感
- 發(fā)展?jié)h語 初級讀寫一 第二課 謝謝你
- 部編版六年級語文下冊第一單元大單元教學(xué)任務(wù)單
- 人教版小學(xué)語文1-6年級背誦內(nèi)容完整版
- 2023徐金桂“徐徐道來”(行政法知識點(diǎn))版
- 《事故汽車常用零部件修復(fù)與更換判別規(guī)范》
- 2024-2030年中國酒類流通行業(yè)發(fā)展動態(tài)及投資盈利預(yù)測研究報告
- 物業(yè)管理如何實(shí)現(xiàn)降本增效
- DL-T825-2021電能計量裝置安裝接線規(guī)則
- 信息科技重大版 七年級下冊 互聯(lián)網(wǎng)應(yīng)用與創(chuàng)新 第一單元單元教學(xué)設(shè)計 互聯(lián)網(wǎng)創(chuàng)新應(yīng)用
- 2024年興業(yè)銀行股份有限公司校園招聘考試試題及參考答案
- 2024智慧城市城市交通基礎(chǔ)設(shè)施智能監(jiān)測技術(shù)要求
評論
0/150
提交評論