版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第4章 MATLAB程序設(shè)計 4.1 M文件 4.2 程序控制結(jié)構(gòu) 4.3 函數(shù)文件 4.4 程序調(diào)試,4.2 程序控制結(jié)構(gòu) 4.2.1 順序結(jié)構(gòu) 1數(shù)據(jù)的輸入 從鍵盤輸入數(shù)據(jù),則可以使用input函數(shù)來進(jìn)行,該函數(shù)的調(diào)用格式為:x=input(提示內(nèi)容) 功能:在屏幕上顯示提示內(nèi)容,等待從鍵盤輸入,將輸入值賦給數(shù)據(jù)變量x。 exp:x=input(請輸入變量x的值?) 運(yùn)行后輸入:1,2,3;4,5,6;7,8,9 再回車 如果在input函數(shù)調(diào)用時采用s選項,則允許用戶輸入一個字符串。例如,想輸入一個人的姓名,可采用命令: x=input(Whats your name?,s);,2數(shù)據(jù)的
2、輸出 MATLAB提供的命令窗口輸出函數(shù)主要有disp函數(shù),其調(diào)用格式為 disp(輸出項) 其中輸出項既可以為字符串,也可以為矩陣。 exp: k=1:5; disp(k) disp(k(1:3) disp(一維數(shù)組),例 : 求一元二次方程ax2 +bx+c=0的根。 程序如下: a=input(a=?); b=input(b=?); c=input(c=?); d=b*b-4*a*c; x=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a); disp(x1=,num2str(x(1),x2=,num2str(x(2); disp(x=); disp(x);,3程序的
3、暫停 暫停程序的執(zhí)行可以使用pause函數(shù),其調(diào)用格式為: pause(延遲秒數(shù)) 如果省略延遲時間,直接使用pause,則將暫停程序,直到用戶按任一鍵后程序繼續(xù)執(zhí)行。 若要強(qiáng)行中止程序的運(yùn)行可使用Ctrl+C命令。,4.2.2 選擇結(jié)構(gòu) 1if語句 在MATLAB中,if語句有3種格式。 (1) 單分支if語句: if 條件 語句組 end 當(dāng)條件成立時,則執(zhí)行語句組,執(zhí)行完之后繼續(xù)執(zhí)行if語句的后繼語句,若條件不成立,則直接執(zhí)行if語句的后繼語句。,exp: a=100; b=345; if a500 c=b/a end,(2) 雙分支if語句: if 條件 語句組1 else 語句組2
4、end 當(dāng)條件成立時,執(zhí)行語句組1,否則執(zhí)行語句組2,語句組1或語句組2執(zhí)行后,再執(zhí)行if語句的后繼語句。,例: 計算分段函數(shù) 。 程序如下: 方法一: x=input(請輸入x的值:); if x=10 y=cos(x+1)+sqrt(x*x+1); else y=x*sqrt(x+sqrt(x); end y,方法二: x=input(請輸入x的值:); y=cos(x+1)+sqrt(x*x+1); if x=10 y=x*sqrt(x+sqrt(x); end y,方法三: x=input(請輸入x的值:); if x=10 y=cos(x+1)+sqrt(x*x+1); end if
5、 x=10 y=x*sqrt(x+sqrt(x); end y,(3) 多分支if語句: if 條件1 語句組1 elseif 條件2 語句組2 elseif 條件m 語句組m else 語句組n end 語句用于實現(xiàn)多分支選擇結(jié)構(gòu)。,exp: x=9,6,3,2,5,8,7,4,1; i=2; j=3; if i=j x(i,j)=0; elseif abs(i-j)=1 x(i,j)=-1; else x(i,j)=10; end x,例: 輸入一個字符,若為大寫字母,則輸出其對應(yīng)的小寫字母;若為小寫字母,則輸出其對應(yīng)的大寫字母;若為數(shù)字字符則輸出其對應(yīng)的數(shù)值,若為其他字符則原樣輸出。 c
6、=input(請輸入一個字符,s); if c=A end,2switch語句 switch語句稱為條件選擇語句,根據(jù)表達(dá)式的取值不同,分別執(zhí)行不同的語句,其語句格式為: switch 表達(dá)式 case 表達(dá)式1 語句組1 case 表達(dá)式2 語句組2 case 表達(dá)式m 語句組m otherwise 語句組n end,當(dāng)表達(dá)式的值等于表達(dá)式1的值時,執(zhí)行語句組1,當(dāng)表達(dá)式的值等于表達(dá)式2的值時,執(zhí)行語句組2,當(dāng)表達(dá)式的值等于表達(dá)式m的值時,執(zhí)行語句組m,當(dāng)表達(dá)式的值不等于case所列的表達(dá)式的值時,執(zhí)行語句組n。當(dāng)任意一個分支的語句執(zhí)行完后,直接執(zhí)行switch語句的下一句。,MATLAB中
7、的switch結(jié)構(gòu)與C語言中的switch結(jié)構(gòu)略有差別。在C語言中,檢驗?zāi)硞€case符合并執(zhí)行其運(yùn)算后,還會繼續(xù)檢驗下一個case,直到全部檢驗完,所以一般會加入break,只運(yùn)算第一個檢驗成功的運(yùn)算式。但在MATLAB中只執(zhí)行一個檢驗成功的case。,exp: a=input(a=?); switch a case 1 disp(a=1); case 2,3,4 disp(a=2or3or4); case 5 disp(a=5); otherwise disp(other value); end;,例4.5 某商場對顧客所購買的商品實行打折銷售,標(biāo)準(zhǔn)如下(商品價格用price來表示): pr
8、ice200 沒有折扣 200price500 3%折扣 500price1000 5%折扣 1000price2500 8%折扣 2500price5000 10%折扣 5000price 14%折扣 輸入所售商品的價格,求其實際銷售價格。,程序如下: price=input(請輸入商品價格); switch fix(price/100) case 0,1 %價格小于200 rate=0; case 2,3,4 %價格大于等于200但小于500 rate=3/100; case num2cell(5:9) %價格大于等于500但小于1000 rate=5/100; case num2cell
9、(10:24) %價格大于等于1000但小于2500 rate=8/100; case num2cell(25:49) %價格大于等于2500但小于5000 rate=10/100; otherwise %價格大于等于5000 rate=14/100; end price=price*(1-rate) %輸出商品實際銷售價格,3try語句 語句格式為: try 語句組1 catch 語句組2 end try語句先試探性執(zhí)行語句組1,如果語句組1在執(zhí)行過程中出現(xiàn)錯誤,則將錯誤信息賦給保留的lasterr變量,并轉(zhuǎn)去執(zhí)行語句組2。,例: 矩陣乘法運(yùn)算要求兩矩陣的維數(shù)相容,否則會出錯。先求兩矩陣的乘
10、積,若出錯,則自動轉(zhuǎn)去求兩矩陣的點乘。 程序如下: A=1,2,3;4,5,6; B=7,8,9;10,11,12; try C=A*B; catch C=A.*B; end C lasterr %顯示出錯原因,4.2.3 循環(huán)結(jié)構(gòu) 1for語句 通常用來執(zhí)行循環(huán)次數(shù)已知的情況,可按指定次數(shù)來重復(fù)執(zhí)行循環(huán)體中的內(nèi)容。 基本調(diào)用格式為: for 循環(huán)變量=表達(dá)式1:表達(dá)式2:表達(dá)式3 循環(huán)體語句 end 其中表達(dá)式1的值為循環(huán)變量的初值,表達(dá)式2的值為步長,表達(dá)式3的值為循環(huán)變量的終值。步長為1時,表達(dá)式2可以省略。,例: 一個三位整數(shù)各位數(shù)字的立方和等于該數(shù)本身則稱該數(shù)為水仙花數(shù)。輸出全部水仙
11、花數(shù)。 程序如下: for m=100:999 m1=fix(m/100); %求m的百位數(shù)字 m2=rem(fix(m/10),10); %求m的十位數(shù)字 m3=rem(m,10); %求m的個位數(shù)字 if m=m1*m1*m1+m2*m2*m2+m3*m3*m3 disp(m) end end,例: for i=1:6 a(i)=i; if i3 a(i)=6-i; end end a,exp: for n=1:10 x(n)=sin(n*pi/10); end x 為提高處理速度,在for循環(huán)被執(zhí)行之前,應(yīng)預(yù)先分配數(shù)組。 x=zeros(1,10) for n=1:10 x(n)=sin
12、(n*pi/10); end x,當(dāng)有一個有效的數(shù)組方法來解答給定的問題時,應(yīng)避免用for循環(huán)。 n=1:10 x=sin(n*pi/10) 例: 已知,當(dāng)n=100時,求y的值。 程序如下: y=0;n=100; for i=1:n y=y+1/i/i; end y,在實際MATLAB編程中,采用循環(huán)語句會降低其執(zhí)行速度,常用向量運(yùn)算來代替循環(huán)操作: n=100; i=1:n; f=1./i.2; y=sum(f),for語句中的循環(huán)變量也可以是任何合法的MATLAB向量或矩陣。對于一個的矩陣A來說可以有: for k=A 循環(huán)體語句 end 執(zhí)行過程是依次將矩陣的各列元素賦給循環(huán)變量,然后
13、執(zhí)行循環(huán)體語句,每次執(zhí)行循環(huán)時,k為矩陣A中1列的所有元素,即A(:,i),直至各列元素處理完畢。,例: 寫出下列程序的執(zhí)行結(jié)果。 s=0; a=12,13,14;15,16,17;18,19,20;21,22,23; for k=a s=s+k; end disp(s);,思考下列程序,寫出其運(yùn)行結(jié)果: A=1,2,9,18;24,31,12,21; for a=A b=a(2)-a(1) end,2while語句 while語句也是一種循環(huán)語句,一般用于事先不能確定循環(huán)次數(shù)的情況。 調(diào)用格式為: while 條件 循環(huán)體語句 end 其執(zhí)行過程為:若條件成立,則執(zhí)行循環(huán)體語句,執(zhí)行后再判斷
14、條件是否成立,如果不成立則跳出循環(huán)。,exp: i=0; while i10 i=i+1 end,例: 從鍵盤輸入若干個數(shù),當(dāng)輸入0時結(jié)束輸入,求這些數(shù)的平均值和它們之和。 程序如下: sum=0; n=0; val=input(Enter a number (end in 0):); while (val=0) sum=sum+val; n=n+1; val=input(Enter a number (end in 0):); end if (n 0) sum mean=sum/n end,3break語句和continue語句 與程序控制相關(guān)的語句還有break語句和continue語句。它們一般與if語句配合使用。 break語句用于終止循環(huán)的執(zhí)行。當(dāng)在循環(huán)體內(nèi)執(zhí)行到該語句時,程序?qū)⑻鲅h(huán),繼續(xù)執(zhí)行循環(huán)語句的下一語句。 continue語句控制跳過循環(huán)體中的某些語句。當(dāng)在循環(huán)體內(nèi)執(zhí)行到該語句時,程序?qū)⑻^循環(huán)體中所有剩下的語句,繼續(xù)下一次循環(huán)。,例: 求100,200之間第一個能被21整除的整數(shù)。 程序如下: for n=100:200 if rem(n,21)=0 continue end break end n,4循環(huá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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 獵頭服務(wù)合同模板(2篇)
- 2024年土地使用權(quán)轉(zhuǎn)讓合同
- 課程設(shè)計紙怎么折疊
- 收割油菜課程設(shè)計
- 幼兒金融普及
- 高三化學(xué)一輪復(fù)習(xí):常見無機(jī)物及其應(yīng)用 (三)
- 合作轉(zhuǎn)讓協(xié)議合同模板
- 家裝水電安裝合同模板
- 農(nóng)場搬運(yùn)機(jī)械合同模板
- 外發(fā)電子加工合同模板
- 六年級上冊數(shù)學(xué)課件-5.1 分?jǐn)?shù)四則混合運(yùn)算丨蘇教版 (共22張PPT)
- 回旋鉆鉆孔施工方案
- 《最好的未來》合唱曲譜
- 車輛租賃服務(wù)內(nèi)容及保障措施方案
- (完整版)CJJ-1-2008-城鎮(zhèn)道路工程施工與質(zhì)量驗收規(guī)范
- 瑜伽公開課教案
- T-CBDA 59-2022 家用不銹鋼整體櫥柜應(yīng)用技術(shù)規(guī)程
- 《木雕》課程教學(xué)大綱
- 2022檢驗檢測機(jī)構(gòu)全套質(zhì)量手冊及程序文件
- 陜師大版五年級上冊綜合實踐教案
- 勇攀高峰藍(lán)色商務(wù)公司宣傳簡介團(tuán)建培訓(xùn)經(jīng)典創(chuàng)意高端PPT模板課件
評論
0/150
提交評論