版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quá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)核提供的,能夠完成基本的運算,例如三角函數(shù)、矩陣運算的函數(shù)等。(2)函數(shù)文件:既包括C語言開發(fā)的MEX函數(shù)文件,又包含了M函數(shù)文件。
為了方便編輯M文件,MATLAB提供了一個編輯器,叫做meditor,是系統(tǒng)默認的M文件編輯器。運行meditor方法:1.>>edit2.File——New——M-file3.單擊工具欄上4.2流程控制
使用結(jié)構(gòu)化的應(yīng)用程序設(shè)計方法可以使設(shè)計的程序結(jié)構(gòu)清晰、可讀性強,能夠提高應(yīng)用程序的設(shè)計效率,增強程序的可維護性。結(jié)構(gòu)化的程序主要有三種基本的程序結(jié)構(gòu):1)順序結(jié)構(gòu):程序語句的簡單羅列,由上至下執(zhí)行2)選擇結(jié)構(gòu):依據(jù)判斷條件的結(jié)果選擇某一種方法解決某一個問題。3)循環(huán)結(jié)構(gòu):程序中某一條語句或多條語句重復(fù)多次運行結(jié)構(gòu)。
1.選擇結(jié)構(gòu)(1)if語句基本語法結(jié)構(gòu)有三種:a.if(關(guān)系運算表達式)c.if(關(guān)系運算表達式a)MATLAB語句MATLAB語句Aendelseif(表達式b)b.if(關(guān)系運算表達式)MATLAB語句BMATLAB語句Aelse(表達式c)else.MATLAB語句B.end.end(2)Switch語句語法:switch(表達式)case常量表達式a:MATLAB語句Acase常量表達式b:MATLAB語句B
...case常量表達式m:MATLAB語句Motherwise:MATLAB語句Nend注意:c語言中,每個case后必須有break,否則依次執(zhí)行符合條件語句后的每一個case分支。MATLAB中,僅執(zhí)行符合條件的那個case分支。2.循環(huán)語句
(1)while語句語法:while(表達式)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)使用了行向量方式控制索引值(即變量)的初始值和增量值,進行循環(huán)運算.
3.break語句和continue語句
break語句作用:在執(zhí)行循環(huán)體時,強迫終止并退出當前循環(huán).continue語句作用:中斷本次循環(huán),跳轉(zhuǎn)到判斷條件語句處,繼續(xù)下一次的循環(huán).注意:在程序中使用break和continue語句改變程序的流程不是好的編程習(xí)慣,所以在編程時,盡量不使用上述兩語句.4.提高運算性能
(1)向量化運算:不要使用循環(huán)結(jié)構(gòu)操作矩陣的元素,應(yīng)直接使用矩陣元素的索引或者矩陣運算的函數(shù).盡量將使用while循環(huán)或者for循環(huán)的語句結(jié)構(gòu)轉(zhuǎn)換成等價的向量或者矩陣運算,以提高程序的運算速度.(2)預(yù)分配存儲空間:為了提高執(zhí)行,減少存儲空間的浪費.不同的數(shù)據(jù)類型有不同的內(nèi)存預(yù)分配函數(shù)(3)MATLAB加速器:改善循環(huá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í)行。特點:沒有輸入?yún)?shù),沒有輸出參數(shù)2.腳本文件中常用的MATLAB指令指令說明pause暫停當前M文件的運行,按任意鍵繼續(xù)input等待用戶輸入keyboard暫停當前M文件的運行,并將程序控制權(quán)交給MATLAB命令行,可按回車鍵或輸入‘return’命令返回,M文件繼續(xù)運行return返回當前的函數(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ù)
特點:定義這些輸入輸出參數(shù)時,不需要指出變量的類型,MATLAB默認這些參數(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é)束運行,則這些變量占用的內(nèi)存空間就自動被釋放,變量的數(shù)值就不存在了。(2)全局變量:由關(guān)鍵字global聲明的變量。MATLAB將全局變量保存在特殊的工作空間進行統(tǒng)一維護、管理。(3)保留變量:由關(guān)鍵字persistent聲明的變量這類變量在函數(shù)退出的時候不被釋放,保留上次退出的值。相當于C語言中的static函數(shù)。(4)isglobal命令:用來測試本地變量與全局工作區(qū)中的變量是否由聯(lián)系,若沒有,則返回值為0。5.函數(shù)執(zhí)行規(guī)則
MATLAB解釋器解析命令按照一定的優(yōu)先級進行:首先判斷輸入的命令是否為變量;若不是內(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)用程序的錯誤有兩類:一是語法錯誤,另一類是運行時的錯誤。 M文件是一種解釋型語言,語法錯誤和運行時的錯誤都只有在運行過程中才能發(fā)現(xiàn),所以程序的調(diào)試往往是在程序無法得到正確結(jié)果時進行程序修正的唯一手段。當程序運行過程中發(fā)生了錯誤或者警告,則程序運行中斷,進入調(diào)試狀態(tài)??梢栽O(shè)置斷點來進行調(diào)試。
MATLAB也提供了一些指令用于進行M文件的調(diào)試。指令說明dbclear清除已經(jīng)設(shè)置好的斷點dbcont繼續(xù)執(zhí)行dbdown/dbup修改當前工作空間的上、下文關(guān)系dbquit退出調(diào)試狀態(tài)dbstack顯示當前堆棧的狀態(tài)dbstatus顯示所有的已經(jīng)設(shè)置的斷點dbstep執(zhí)行應(yīng)用程序的一行或者多行代碼dbstop設(shè)置斷點dbtype顯示M文件代碼和相應(yīng)的行號6.M文件性能分析
使用M文件性能分析器有兩種方法:一是通過命令行,二是通過圖形用戶界面。打開圖形用戶界面方法:a.>>profviewb.Start—MATLAB—Profiler
填入要測試的文件后,單擊“StartProfiling”按鈕,則性能分析器通過運行指定的指令得出程序運行消耗的時間,并給出一個簡要的總結(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 經(jīng)營責(zé)任合同范本
- 維修報價合同范本
- 合同代簽人協(xié)議
- 借轉(zhuǎn)補合同范本
- 手術(shù)協(xié)議屬于合同
- 代持購房協(xié)議書
- 疫苗出口合同范本
- 公務(wù)員合同范本
- 公司劃轉(zhuǎn)協(xié)議書
- 偷竊賠償協(xié)議書
- 2025年海北朵拉農(nóng)牧投資開發(fā)有限公司招聘3人備考題庫含答案詳解
- 2025年港口物流智能化系統(tǒng)建設(shè)項目可行性研究報告
- T-CNHC 14-2025 昌寧縣茶行業(yè)技能競賽規(guī)范
- 薄壁零件沖床的運動方案設(shè)計模板
- 2025地球小博士知識競賽試題及答案
- 2025貴州錦麟化工有限責(zé)任公司第三次招聘7人考試筆試模擬試題及答案解析
- 軍人體能訓(xùn)練標準化手冊
- 住院患者等待時間優(yōu)化與滿意度策略
- 2026中國儲備糧管理集團有限公司黑龍江分公司招聘98人考試模擬卷附答案解析
- 2023年十堰市稅務(wù)系統(tǒng)遴選筆試真題匯編附答案解析
- 投資銀行核心業(yè)務(wù)操作流程與案例分析
評論
0/150
提交評論