第二講(第二部分)MATLAB的程序設(shè)計(jì)與M文件_第1頁(yè)
第二講(第二部分)MATLAB的程序設(shè)計(jì)與M文件_第2頁(yè)
第二講(第二部分)MATLAB的程序設(shè)計(jì)與M文件_第3頁(yè)
第二講(第二部分)MATLAB的程序設(shè)計(jì)與M文件_第4頁(yè)
第二講(第二部分)MATLAB的程序設(shè)計(jì)與M文件_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

程序設(shè)計(jì)和M文件

1程序控制2M文件結(jié)構(gòu)3函數(shù)的使用4程序的調(diào)試1程序控制

1.1分支控制語(yǔ)句1.if結(jié)構(gòu)

if條件1

語(yǔ)句段1 elseif條件2

語(yǔ)句段2 ...... else

語(yǔ)句段n

end>>x=-5:0.1:5;>>ifx>=1y=x.^2-1elseif-1<x<1y=0*xelsey=-x.^3-1endplot(x,y)2.switch結(jié)構(gòu)switch表達(dá)式 case值1

語(yǔ)句段1

case值2

語(yǔ)句段2 ... otherwise

語(yǔ)句段n

end說(shuō)明:將表達(dá)式依次與case后面的值進(jìn)行比較,滿足值的范圍就執(zhí)行相應(yīng)的語(yǔ)句段,如果都不滿足則執(zhí)行otherwise后面的語(yǔ)句段;表達(dá)式只能是標(biāo)量或字符串;case后面的值可以是標(biāo)量、字符串或元胞數(shù)組,如果是元胞數(shù)組則將表達(dá)式與元胞數(shù)組的所有元素進(jìn)行比較,只要某個(gè)元素與表達(dá)式相等,就執(zhí)行其后的語(yǔ)句段;switch和end必須配對(duì)使用。例1使用switch結(jié)構(gòu)判斷學(xué)生成績(jī)的等級(jí),90分以上為優(yōu),80~90為良,70~80為中,60~70為及格,60分以下為不及格。>>score=98;>>s1=fix(score/10); %取十位數(shù)>>switchs1case{9,10}s='優(yōu)'case8s='良'case7s='中'case6s='及格'otherwises='不及格'end1.2循環(huán)控制語(yǔ)句1.for循環(huán) for循環(huán)變量=array 循環(huán)體 end說(shuō)明:array可以是向量也可以是矩陣,循環(huán)執(zhí)行的次數(shù)就是array的列數(shù),每次循環(huán)中循環(huán)變量依次取array的各列并執(zhí)行循環(huán)體,直到array所有列取完。forn=1:5 %循環(huán)5次forn=-1:0.1:1 %循環(huán)21次forn=linspace(-2*pi,2*pi,5) %循環(huán)5次a=eye(2,3);forn=a %循環(huán)3次,n為列向量練習(xí)2.while循環(huán) while條件表達(dá)式 循環(huán)體 end例2使用while循環(huán)計(jì)算f(x)=sin(x),x<5且每次x遞增ln(x)。>>x=0.1;>>whilex<5

f=sin(x)x=x+log(x) end3.break和continue語(yǔ)句(1)break語(yǔ)句break語(yǔ)句使包含break的最內(nèi)層for或while循環(huán)強(qiáng)制終止,并立即跳出該循環(huán)結(jié)構(gòu),執(zhí)行end后面的命令,break一般與if語(yǔ)句結(jié)合使用。(2)continue語(yǔ)句continue語(yǔ)句與break不同的是continue只結(jié)束本次for或while循環(huán),而繼續(xù)進(jìn)行下次循環(huán),continue一般也與if語(yǔ)句結(jié)合使用。1.3錯(cuò)誤控制語(yǔ)句 try

語(yǔ)句段1 catch

語(yǔ)句段2 end說(shuō)明:先試探地執(zhí)行語(yǔ)句段1,如果出現(xiàn)錯(cuò)誤則將錯(cuò)誤信息賦給保留的lasterr變量,并放棄語(yǔ)句段1轉(zhuǎn)而執(zhí)行語(yǔ)句段2中的語(yǔ)句;如果語(yǔ)句段2正確則結(jié)束;如果語(yǔ)句段1正確則不執(zhí)行語(yǔ)句段2就結(jié)束;當(dāng)語(yǔ)句段1和語(yǔ)句段2都錯(cuò)誤,則程序出錯(cuò)。當(dāng)錯(cuò)誤控制結(jié)構(gòu)運(yùn)行結(jié)束后,可以調(diào)用lasterr函數(shù)查詢出錯(cuò)信息,調(diào)用方法是“[lastmsg,lastid]=lasterr”,其中l(wèi)astmsg保存出錯(cuò)信息,lastid保存錯(cuò)誤類型。1.4流程控制命令1.return命令return命令用于提前結(jié)束程序的執(zhí)行,并立即返回到上一級(jí)調(diào)用函數(shù)或等待鍵盤輸入命令,一般用于遇到特殊情況需要立即退出程序或終止鍵盤方式。應(yīng)注意當(dāng)程序進(jìn)入死循環(huán)時(shí),則按Ctrl+break鍵來(lái)終止程序的運(yùn)行。2.keyboard命令keyboard命令用來(lái)使程序暫停運(yùn)行,等待鍵盤命令,命令窗口出現(xiàn)“K>>”提示符,當(dāng)鍵盤輸入“return”后,程序才繼續(xù)運(yùn)行。keyboard命令可以用來(lái)在程序調(diào)試或程序執(zhí)行時(shí)3.input命令r=input('str','s')%從鍵盤中輸入數(shù)據(jù)保存到變量r4.disp命令disp命令是較常用的顯示命令,常用來(lái)顯示字符串型的信息提示。5.pause命令pause命令用來(lái)使程序暫停運(yùn)行,當(dāng)用戶按任意鍵才繼續(xù)執(zhí)行。常用于程序調(diào)試或查看中間結(jié)果,也可以用來(lái)控制執(zhí)行的速度。pause的命令格式如下:pause(n) %暫停n秒練習(xí)2M文件結(jié)構(gòu)MATLAB7.X的程序如果要保存則使用擴(kuò)展名是“.m”的M文件,M文件有兩種即M腳本文件(ScriptFile)和M函數(shù)文件(FunctionFile)。2.1M文件的一般結(jié)構(gòu)1.函數(shù)聲明行函數(shù)聲明行是在M函數(shù)文件的第一行,只有M函數(shù)文件必須有,以“function”引導(dǎo)并指定函數(shù)名、輸入和輸出參數(shù),M腳本文件沒有函數(shù)聲明行。2.H1行H1行是幫助文字的第一行。3.幫助文本4.程序代碼

程序代碼由MATLAB語(yǔ)句和注釋語(yǔ)句構(gòu)成。2.2M腳本文件和M函數(shù)文件1.M腳本文件M腳本文件的說(shuō)明如下:(1)MATLAB在運(yùn)行腳本文件時(shí),只是簡(jiǎn)單地按順序從文件中讀取一條條命令,送到MATLAB命令窗口中去執(zhí)行;(2)M腳本文件運(yùn)行產(chǎn)生的變量都駐留在MATLAB的工作空間中,可以很方便地查看變量,在命令窗口中運(yùn)行的命令都可以使用這些變量;(3)腳本文件的命令可以訪問(wèn)工作空間的所有數(shù)據(jù),因此要注意避免工作空間和腳本文件中的同名變量相互覆蓋,一般在M腳本文件的開頭使用“clear”命令清除工作空間的變量。例4在M文件編輯/調(diào)試器窗口中編寫M腳本文件得出10-50范圍內(nèi)的所有素?cái)?shù)。%EX5_8計(jì)算10-50內(nèi)的素?cái)?shù)cleary1=primes(50); %獲得50以內(nèi)的所有素?cái)?shù)n=length(primes(10)); %獲得10以內(nèi)素?cái)?shù)的個(gè)數(shù)y=y1(n+1:end)在命令窗口中輸入:>>ex5_8y=1113171923293137414347在工作空間中就可以查看到變量y1、n和y,并可以修改和使用這些變量。練習(xí)2.M函數(shù)文件M函數(shù)文件的說(shuō)明如下:(1)M函數(shù)文件中的函數(shù)聲明行是必不可少的;(2)M函數(shù)文件在運(yùn)行過(guò)程中產(chǎn)生的變量都存放在函數(shù)本身的工作空間中,函數(shù)的工作空間是獨(dú)立的、臨時(shí)的,隨具體的M函數(shù)文件調(diào)用而產(chǎn)生并隨調(diào)用結(jié)束而刪除,在MATLAB運(yùn)行過(guò)程中如果運(yùn)行多個(gè)函數(shù)則產(chǎn)生多個(gè)臨時(shí)的函數(shù)空間;(3)當(dāng)文件執(zhí)行完最后一條命令或遇到“return”命令時(shí)就結(jié)束函數(shù)文件的運(yùn)行,同時(shí)函數(shù)工作空間的變量被清除;(4)一個(gè)M函數(shù)文件至少要定義一個(gè)函數(shù)。函數(shù)聲明行的格式如下:function[輸出參數(shù)列表]=函數(shù)名(輸入?yún)?shù)列表)

說(shuō)明:函數(shù)名是函數(shù)的名稱,保存時(shí)最好函數(shù)名與文件名一致,當(dāng)不一致時(shí),MATLAB以文件名為準(zhǔn);輸入?yún)?shù)列表是函數(shù)接收的輸入?yún)?shù),多個(gè)參數(shù)間用“,”分隔;輸出參數(shù)列表是函數(shù)運(yùn)算的結(jié)果,多個(gè)參數(shù)間用“,”分隔。ThinkingM函數(shù)文件與腳本文件的區(qū)別???3函數(shù)的使用

3.1主函數(shù)和子函數(shù)1.主函數(shù)一個(gè)M函數(shù)文件中可以包含一個(gè)或多個(gè)函數(shù),主函數(shù)是出現(xiàn)在文件最上方的函數(shù),即第一行聲明的函數(shù),一個(gè)M文件只能有一個(gè)主函數(shù),通常主函數(shù)名與M函數(shù)文件名相同。2.子函數(shù)(1)子函數(shù)的次序無(wú)任何限制;(2)子函數(shù)只能被同一文件中的函數(shù)(主函數(shù)或子函數(shù))調(diào)用,不能被其它文件的函數(shù)調(diào)用;(3)同一文件的主函數(shù)和子函數(shù)運(yùn)行時(shí)的工作空間是相互獨(dú)立的。3.2函數(shù)的輸入輸出參數(shù)1.參數(shù)的傳遞函數(shù)的參數(shù)傳遞是將主調(diào)函數(shù)中的變量值傳給被調(diào)函數(shù)的輸入?yún)?shù)(1)函數(shù)參數(shù)傳遞的是數(shù)值(2)被調(diào)函數(shù)的輸入?yún)?shù)是存放在函數(shù)的工作空間中,與MATLAB的工作空間是獨(dú)立的,當(dāng)調(diào)用結(jié)束時(shí)函數(shù)的工作空間被清除,輸入?yún)?shù)也被清除。2.輸入輸出參數(shù)的個(gè)數(shù)(1)nargin和nargout函數(shù)nargin('fun') %獲取函數(shù)fun的輸入?yún)?shù)個(gè)數(shù)nargout('fun')%獲取函數(shù)fun的輸出參數(shù)個(gè)數(shù)說(shuō)明:fun是函數(shù)名,可以省略,當(dāng)nargin和nargout函數(shù)在函數(shù)體內(nèi)時(shí)fun可省略,在函數(shù)外時(shí)fun不省略。(2)varargin和varargout函數(shù)varargin和varargout函數(shù)將函數(shù)調(diào)用時(shí)實(shí)際傳遞的參數(shù)構(gòu)成元胞數(shù)組,通過(guò)訪問(wèn)元胞數(shù)組中各元素內(nèi)容來(lái)獲得輸入輸出變量。functiony=fun(varargin)%輸入?yún)?shù)為varargin的函數(shù)funfunctionvarargout=fun(x)%輸出參數(shù)為varargout的函數(shù)fun4程序的調(diào)試

4.1直接檢測(cè)(1)對(duì)于需要檢測(cè)的變量可以通過(guò)刪除語(yǔ)句行末尾的分號(hào),或在程序的適當(dāng)位置加顯示變量值的語(yǔ)句,將結(jié)果顯示在命令窗口中;(2)調(diào)試函數(shù)時(shí),可以將該函數(shù)的第一句函數(shù)聲明行前加“%”,并給輸入?yún)?shù)賦值,就可以以腳本文件的方式來(lái)執(zhí)行該函數(shù),避免多個(gè)函數(shù)在一起運(yùn)行時(shí)查錯(cuò)不方便;(3)在程序的適當(dāng)位置添加“keyboard”語(yǔ)句,當(dāng)程序運(yùn)行至此句會(huì)暫停運(yùn)行,并在命令窗口顯示“k>>”提示符,這時(shí)就可以在命令窗口查看和修改各變量的內(nèi)容。4.2M文件編輯/調(diào)試器窗口1.“Debug”菜單(1)Step(F10)(2)Stepin(F11)和Stepout(shift+F11)(3)Run/Continue(F5)(4)Set/ClearBreakpoints(F12)(5)Set/ModifyConditionalBreakpoint…(6)StopifErrors/Warnings…(7)ExitDebugMode2.“Cell”菜單和工具欄“Cell”菜單和工具欄是MATLAB7.0版后新推出的菜單,提出了單元調(diào)試的概念,將程序分成一個(gè)個(gè)獨(dú)立的單元(cell),每個(gè)單元用“%%”(單元分隔符)來(lái)分隔可以單獨(dú)調(diào)試。(1)InsertCellDivider(2)EvaluateCurrentCell(3)EvaluateEntireFile(4)增減步長(zhǎng)和增減倍數(shù)按鈕練習(xí):運(yùn)行以下命令:>>a=eye(5);>>forn=a(2:end,:)

……則for循環(huán)的循環(huán)次數(shù)是______。 A.5 B.4 C.3 D.1B練習(xí):運(yùn)行以下命令則______>>a=[123]>>keyboard K>>a=[124];K>>returnA.a=[123] B.a=[124]C.命令窗口的提示符為“K>>” D.出錯(cuò)B練習(xí):編寫M腳本文件,分別使用for和while循環(huán)語(yǔ)句計(jì)算,當(dāng)sum>1000時(shí)終止程序。答案:clearsum=0forn=1:1000sum=n^n+sum

ifsum>1000breakendendc

溫馨提示

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

評(píng)論

0/150

提交評(píng)論