三章MATLAB程序設(shè)計(jì)課件_第1頁
三章MATLAB程序設(shè)計(jì)課件_第2頁
三章MATLAB程序設(shè)計(jì)課件_第3頁
三章MATLAB程序設(shè)計(jì)課件_第4頁
三章MATLAB程序設(shè)計(jì)課件_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

3.1.3函數(shù)式M文件(1)函數(shù)文件的基本結(jié)構(gòu)function[輸出參量1,輸出參量2]=函數(shù)名(輸入?yún)⒘?,輸入?yún)⒘?)%注釋說明部分函數(shù)體語句其中以function開頭的一行為引導(dǎo)行,表示該M文件是一個(gè)函數(shù)文件。函數(shù)名的命名規(guī)則與變量名相同。當(dāng)輸入?yún)⒘慷嘤谝粋€(gè)時(shí),則應(yīng)該用小括號括起來。當(dāng)輸出參量多于一個(gè)時(shí),則應(yīng)該用方括號括起來。89函數(shù)式M文件一般都要自帶參數(shù),并且有返回結(jié)果。函數(shù)式M文件中的變量都不是全局變量,僅存在函數(shù)本身的工作空間不會與MATLAB基本工作空間(BaseWorkplace)的全局變量重復(fù)。函數(shù)運(yùn)行完畢之后,它所定義的變量將從工作區(qū)間中清除。類似于一個(gè)黑箱。因此除了輸入變量外,運(yùn)行過程所需其他變量須自行設(shè)定,不推薦在函數(shù)文件中使用全局變量,以利于程序的模塊化。10(2)函數(shù)調(diào)用在命令窗口,函數(shù)調(diào)用的一般格式是:

[輸出參量表]=函數(shù)名(輸入?yún)⒘勘?函數(shù)調(diào)用時(shí)輸入?yún)⒘砍霈F(xiàn)的順序、個(gè)數(shù)和類型,應(yīng)與函數(shù)定義一致,參量名字可以不同,否則會出錯(cuò)。輸出參量可以少于規(guī)定的個(gè)數(shù),但絕不能多于。在MATLAB中,函數(shù)可以嵌套調(diào)用,即一個(gè)函數(shù)可以調(diào)用別的函數(shù),甚至調(diào)用它自身。調(diào)用的函數(shù)必須在MATLAB搜索路徑范圍內(nèi),一般把它們放在同一個(gè)文件夾內(nèi)。113.2M文件的流控制語句

順序結(jié)構(gòu)

選擇結(jié)構(gòu)(if,switch)循環(huán)結(jié)構(gòu)(for,while)其他流控制語句(continue,break,return,echo,input,keyboard,pause…)123.2.1順序結(jié)構(gòu)

順序結(jié)構(gòu)是最簡單的程序結(jié)構(gòu),用戶在編寫好程序之后,系統(tǒng)將按照程序的物理位置順次執(zhí)行。

例如

a=1;

b=2;

c=3;

s1=a+b;

s2=s1+c;

s3=s2/s2;

133.2.2選擇結(jié)構(gòu)1.if語句在MATLAB中,if語句有3種格式。

(1)單分支if語句:

if條件語句組

end當(dāng)條件成立時(shí),則執(zhí)行語句組,執(zhí)行完之后繼續(xù)執(zhí)行if語句的后繼語句,若條件不成立,則直接執(zhí)行if語句的后繼語句。14(2)雙分支if語句:if條件語句組1else

語句組2end

當(dāng)條件成立時(shí),執(zhí)行語句組1,否則執(zhí)行語句組2,語句組1或語句組2執(zhí)行后,再執(zhí)行if語句的后繼語句。15例

計(jì)算分段函數(shù)的值

x=input('請輸入x的值:');ifx<=0y=(x+sqrt(pi))/sqrt(2);elsey=(log10(x)+sqrt(1+x*x))/2;endy16

(3)多分支if語句:if條件1

語句組1elseif條件2

語句組2……elseif條件m

語句組melse其它情況

語句組nend語句用于實(shí)現(xiàn)多分支選擇結(jié)構(gòu)。172.switch語句

switch語句根據(jù)表達(dá)式的取值不同,分別執(zhí)行不同的語句,其語句格式為:

switch表達(dá)式

case表達(dá)式1

語句組1case表達(dá)式2

語句組2……case表達(dá)式m

語句組motherwise

語句組nend18例

選擇不同顏色繪制[-2π2π]區(qū)間正弦曲線

t=[-2*pi:pi/10:2*pi];y=sin(t);colour=input(‘請輸入你要選擇的顏色','s');switchcolourcase'red'plot(t,y,'r');case'blue'plot(t,y,'b');otherwise%其他情況一律用黑色

plot(t,y,’k’)end

193.2.3循環(huán)結(jié)構(gòu)1.for語句

For語句是一種循環(huán)語句,可以讓用戶很方地實(shí)現(xiàn)循環(huán)操作,從而可以從容地應(yīng)付大規(guī)模的循環(huán)語句。(1)單循環(huán)for循環(huán)變量=初值:步長:終值循環(huán)體語句

end

20計(jì)算1+2+3+4+5結(jié)果為m=15for語句更一般的格式為:

for循環(huán)變量=矩陣表達(dá)式循環(huán)體語句

end

執(zhí)行過程是依次將矩陣的各行元素賦給循環(huán)變量,然后執(zhí)行循環(huán)體語句,直至各行元素處理完畢。22

例s=0;a=[12,13,14;15,16,17;18,19,20;21,22,23];fork=as=s+k;ends‘

運(yùn)行結(jié)果:3948576623

在實(shí)際MATLAB編程中,采用循環(huán)語句會降低其執(zhí)行速度,應(yīng)盡可能采用矩陣運(yùn)算。24>>b=sum(a,2)b=394857662.while語句與for循環(huán)不同,while循環(huán)的判斷控制可以是邏輯判斷語句,因此,它的循環(huán)次數(shù)可以是一個(gè)不定數(shù)。這樣就賦予了它比for循環(huán)更廣泛的用途。

while(條件)

循環(huán)體語句

end

其執(zhí)行過程為:若條件成立,則執(zhí)行循環(huán)體語句,執(zhí)行后再判斷條件是否成立,如果不成立則跳出循環(huán)。25例:從0到100累加,當(dāng)和大于500時(shí)候停止。26n=1;y=0;whiley<=500y=y+n;n=n+1;endny3.2.4其他流控制語句與循環(huán)結(jié)構(gòu)相關(guān)的語句還有break語句和continue語句。它們一般與if語句配合使用。break語句用于終止循環(huán)的執(zhí)行。當(dāng)在循環(huán)體內(nèi)執(zhí)行到該語句時(shí),程序?qū)⑻鲅h(huán),繼續(xù)執(zhí)行循環(huán)語句后面的語句。(2)continue語句控制跳過循環(huán)體中的某些語句。當(dāng)在循環(huán)體內(nèi)執(zhí)行到該語句時(shí),程序?qū)⑻^循環(huán)體中所有剩下的語句,繼續(xù)下一次循環(huán)。27例

求[100,200]之間第一個(gè)能被21整除的整數(shù)。程序如下:forn=100:200ifrem(n,21)~=0

continueend

breakendn不能被21整除能被21整除結(jié)束for循環(huán)28(3)echoon(off)語句執(zhí)行每行程序前顯示器內(nèi)容。(4)pause(n)語句執(zhí)行到此處停留n秒,如果沒有括號參數(shù)則須用戶點(diǎn)擊任意鍵繼續(xù)。(5)keyboard語句停止執(zhí)行并將控制權(quán)交給鍵盤,在屏幕上顯示K>>。對程序調(diào)控和程序運(yùn)行中修改變量非常方便。當(dāng)鍵入return是恢復(fù)原來程序的運(yùn)行。29(6)Input語句用來提示用戶輸入數(shù)據(jù)或字符串,并接受輸入值。A=input(‘promt’)%在屏幕顯示prompt,并將輸入數(shù)值付與變量AB=input(‘prompt’,’s’)’)%在屏幕顯示prompt,并將輸入字符付與字符串變量B(7)menu語句menu(‘說明’,’選項(xiàng)1’,’選項(xiàng)2’…)(8)Ctrl+C或者Ctrl+break強(qiáng)行停止程序運(yùn)行。30313.3程序的調(diào)試(debug)在MATLAB的表達(dá)式中可能存在兩種類型的錯(cuò)誤,即語法錯(cuò)誤和運(yùn)行錯(cuò)誤

3.3.1語法錯(cuò)誤

例如:變量名或者函數(shù)名的誤寫,標(biāo)點(diǎn)符號的缺漏和控制語句end的缺漏等,此類錯(cuò)誤MATLAB運(yùn)行時(shí)一般能發(fā)現(xiàn)并報(bào)錯(cuò)。易于更正。Editor中語法錯(cuò)誤會在后面出現(xiàn)淺色的橫杠,鼠標(biāo)放在上面會給出錯(cuò)誤的具體內(nèi)容,點(diǎn)擊“Fix”會修正語法錯(cuò)誤。顯示所有的錯(cuò)誤3.3.2邏輯錯(cuò)誤的識別和程序調(diào)試

1、邏輯錯(cuò)誤,例如算法本身問題或者對MATLAB指令的使用不當(dāng),在程序運(yùn)行過程中,出現(xiàn)溢出或是死循環(huán)等異常現(xiàn)象。

35(1)直接調(diào)試法

對于簡單的問題,使用下面的一種或幾種方法可以方便地求解:在函數(shù)文件頭前加“%”,并定義輸入變量的值,這樣就將函數(shù)式M文件變?yōu)槟_本式M文件,而腳本式M文件運(yùn)行時(shí),其工作區(qū)間就是MATLAB的工作區(qū)間,這樣在出現(xiàn)錯(cuò)誤的時(shí)候就可以查詢這個(gè)工作區(qū)間。最好在腳本文件頭兩行輸入“clear;clc;”創(chuàng)造良好的運(yùn)行環(huán)境。將程序中輸出關(guān)鍵值的行的分號(;)去掉,這樣,這些運(yùn)算的中間結(jié)果將在命令窗口中予以顯示,用戶可以據(jù)此來檢查中間結(jié)果的正確性。注意矩陣運(yùn)算與矩陣元素運(yùn)算的區(qū)別“*、.*、/、./”。養(yǎng)成每行加注釋的良好習(xí)慣,以利于程序的調(diào)試和可讀性(2)工具調(diào)試法36

點(diǎn)擊圖標(biāo)或者直接在點(diǎn)擊行號與文本之間的橫杠設(shè)置一個(gè)斷點(diǎn),編譯器用一個(gè)大紅點(diǎn)標(biāo)記。程序運(yùn)行后將在斷點(diǎn)處暫停,并出現(xiàn)一個(gè)綠色箭此時(shí)命令窗口的提示符由“>>”變?yōu)椤癒>>”,用戶可以查看前面的運(yùn)行結(jié)果。

點(diǎn)擊圖標(biāo)運(yùn)行下一行語句,綠色箭頭向下移動(dòng)一位。點(diǎn)擊

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論