版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
5.3程序結(jié)構(gòu)
MATLAB語言的程序結(jié)構(gòu)與其他高級語言是一致的,分為順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu).5.3.1順序結(jié)構(gòu)
順序結(jié)構(gòu)是最簡單的程序結(jié)構(gòu),在編寫好程序后,系統(tǒng)依次按照程序的物理位置順序執(zhí)行程序的各條語句,因此,這種程序比較容易編寫.但是,由于程序結(jié)構(gòu)比較單一,實(shí)現(xiàn)的功能也比較有限.例5.10輸入x,y的值,并將它們的值互換后輸出.解clear
x=input('pleaseinputx:')
y=input('pleaseinputy:')
z=x;x=y;y=z;
disp(x)
disp(y)5.3.2分支結(jié)構(gòu)
分支結(jié)構(gòu)是根據(jù)一定條件選擇執(zhí)行不同的語句,有if分支結(jié)構(gòu)和switch分支結(jié)構(gòu).
1if分支結(jié)構(gòu)
分為以下三種情況.
格式一:單分支語句
if邏輯表達(dá)式
執(zhí)行語句
end
這種程序結(jié)構(gòu)比較簡單,它只有一個(gè)判斷語句,當(dāng)表達(dá)式為真時(shí)就執(zhí)行if和end之間的語句,否則不執(zhí)行.格式二:雙分支語句if邏輯表達(dá)式
執(zhí)行語句1else
執(zhí)行語句2end如果邏輯表達(dá)式為真,就執(zhí)行語句1;否則,系統(tǒng)就執(zhí)行語句2.格式三:多分支語句if邏輯表達(dá)式1
執(zhí)行語句1elseif邏輯表達(dá)式2
執(zhí)行語句2elseif邏輯表達(dá)式3
執(zhí)行語句3……else
執(zhí)行語句nend
在這種形式中,當(dāng)運(yùn)行到程序的某一邏輯表達(dá)式為真時(shí),則執(zhí)行與之有關(guān)的語句,此時(shí)系統(tǒng)將不再檢驗(yàn)其他的邏輯表達(dá)式,即系統(tǒng)跳過其余的if-else-end結(jié)構(gòu).例5.11輸入一個(gè)百分制成績,要求輸出成績等級A、B、C、D、E.其中90分~100分為A,80分~89分為B,70分~79分為C,60分~69分以下為E.解命令如下:clears=input('pleaseinputthescore:')ifs>=90&s<=100rank='A';elseifs>=80&s<=89
rank='B';elseifs>=70&s<=79rank='C';elseifs>=60&s<=69rank='D';elseifs>0&s<=59rank='E';elserank='wrongscore'endrank例5.12已知函數(shù),求.解新建函數(shù)文件f.m文件,命令如下:functiony=f(x)ifx<0y=x^2;elseifx>=0&&x<2y=exp(x);elsey=log(x);end在命令行窗口分別運(yùn)行y=f(-1),y=f(1),y=f(4),>>y=f(-1)y=1>>y=f(1)y=2.7183>>y=f(4)y=1.3863得到2switch分支結(jié)構(gòu)switch語句根據(jù)變量或表達(dá)式的取值不同,分別執(zhí)行不同的語句.格式為:switch表達(dá)式case值1
語句組1case值2
語句組2……case值m
語句組motherwise
語句組m+1end
其中分支條件可以是一個(gè)函數(shù)、變量或表達(dá)式.如果條件1與分支條件匹配就執(zhí)行語句1,退出循環(huán);否則,檢驗(yàn)條件2,如果條件2與分支條件匹配執(zhí)行語句2,退出循環(huán);否則,檢驗(yàn)條件3,…,當(dāng)所有條件都不與分支條件匹配時(shí)就執(zhí)行最后的語句.注意otherwise是可以省略的.例5.13從鍵盤輸入一個(gè)數(shù)字,判斷它能否被5整除.解MATLAB命令如下:n=input('請輸入一個(gè)數(shù)字n=')switchmod(n,5)case0fprintf('n是5的倍數(shù)',n)otherwisefprintf('n不是5的倍數(shù)',n)end運(yùn)行結(jié)果為:
請輸入一個(gè)數(shù)字n=36
n=
36
n不是5的倍數(shù)例5.14某商場對顧客所購買的商品實(shí)行打折銷售,標(biāo)準(zhǔn)如下(商品價(jià)格用x來表示):輸入所售商品的價(jià)格,求其實(shí)際銷售價(jià)格.解MATLAB命令如下:clearprice=input('請輸入商品價(jià)格:');switchfix(price/100)case{0,1}
rate=0;case{2,3,4}rate=3/100;case{5:20}rate=5/100;otherwiserate=10/100;endprice=price*(1-rate)運(yùn)行結(jié)果為:請輸入商品價(jià)格:1800price=16205.3.3循環(huán)結(jié)構(gòu)
循環(huán)結(jié)構(gòu)重復(fù)執(zhí)行一組語句,是計(jì)算機(jī)解決問題的主要手段.1.for循環(huán)
for循環(huán)變量=初值:步長:終值
循環(huán)體
end例5.15求20!.解MATLAB命令如下:clear;r=1;fork=1:20r=r*k;endr運(yùn)行結(jié)果為:r=2.4329e+18可得
例5.16作出分段函數(shù)
的圖形解MATLAB命令如下:y=[];forx=-4:0.1:4ifx<=0y=[y,sin(x)];endifx>0y=[y,exp(x)-1];endendx=-4:0.1:4;plot(x,y)運(yùn)行后得到圖5-1.圖5-1分段函數(shù)圖形
2.while循環(huán)while(條件)循環(huán)體end注:while語句一般用于事先不能確定循環(huán)次數(shù)的情況.
例5.17求Fibonacci數(shù)列前100項(xiàng)和S.解MATLAB命令如下:clearF=[];F(1)=1;F(2)=1;i=3;s=F(1)+F(2); whilei<=100F(i)=F(i-1)+F(i-2);s=s+F(i);i=i+1;ends
運(yùn)行結(jié)果為:s=9.2737e+20可得S=9.2737×1020.
例5.18計(jì)算.解MATLAB命令如下:clear
s=0;
forn=1:500
s=s+1/n;
end
s運(yùn)行結(jié)果為:
s=
6.7928也可以利用while循環(huán)語句得到,命令如下:clear;s=0;n=1;whilen<=500s=s+1/n;n=n+1;ends可得
=6.7928.注:在使用循環(huán)語句時(shí),如果不小心陷入了死循環(huán),可以使用快捷鍵Ctrl+C強(qiáng)行中斷.5.3.4程序優(yōu)化技術(shù)
MATLAB是解釋型語言,計(jì)算速度較慢,所以在編程時(shí)如何提高程序的運(yùn)行速度是需要考慮的問題.優(yōu)化程序運(yùn)行可采用以下辦法1.循環(huán)向量化
MATLAB是以矩陣為基礎(chǔ)的算法,因此有些循環(huán)可直接轉(zhuǎn)換成向量或矩陣運(yùn)算,可提高程序的執(zhí)行速度;有些函數(shù)內(nèi)部已經(jīng)采用了向量化處理,使用這些向量化函數(shù),因而運(yùn)行效率比較高.例5.19比較循環(huán)法和向量法求y=sin(x)在x=[0:.01:100]點(diǎn)處值所花的時(shí)間.解MATLAB命令如下:tic%啟動(dòng)秒表計(jì)時(shí)器來測量性能,函數(shù)會記錄執(zhí)行
tic
命令時(shí)的內(nèi)部時(shí)間i=0;fort=0:.01:100i=i+1;y(i)=sin(t);%循環(huán)法endtoctict=0:.01:100;y=sin(t);%向量法toc%使用
toc
函數(shù)顯示已用時(shí)間
運(yùn)行結(jié)果為:
歷時(shí)0.004141秒.
歷時(shí)0.001776秒.可見利用向量法可以節(jié)省時(shí)間.例5.20將例5.18使用向量化函數(shù)提高運(yùn)行速度.解MATLAB命令如下:cleartic
s=0;
n=1:500;
s=sum(1./n)
toc運(yùn)行結(jié)果為:歷時(shí)0.000284秒.利用向量化函數(shù)能夠提高運(yùn)行速度.
2.預(yù)分配內(nèi)存
利用預(yù)分配可減少程序運(yùn)行時(shí)間.一般在程序設(shè)計(jì)中,經(jīng)常會涉及到循環(huán)重復(fù),每次循環(huán)至少會得到一個(gè)結(jié)果元素(比如y(k)).通過對y預(yù)分配,可免去每次增大y的操作,從而大大地減少計(jì)算時(shí)間.
例5.21預(yù)分配內(nèi)存舉例.解MATLAB命令如下:tici=0;y=zeros(1,10000);fort=0:
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年健身草根運(yùn)動(dòng)合同
- 2025年在線工業(yè)制造平臺用戶注冊協(xié)議
- 2025年公用事業(yè)水電燃?xì)鈪f(xié)議
- 2025年人力資源抵押合同
- 二零二五版7月:生物制藥研發(fā)成果轉(zhuǎn)讓及收益分成還款協(xié)議模板3篇
- 二零二五年度高檔實(shí)木地板定制安裝合同4篇
- 中銀個(gè)人購買寫字樓貸款合同(2024年版)
- 2025年度木地板生產(chǎn)工藝優(yōu)化與節(jié)能減排合同4篇
- 二零二五年度母子公司智能裝備制造合作協(xié)議4篇
- 臨時(shí)用電施工安全規(guī)范合同匯編版B版
- 9.2溶解度(第1課時(shí)飽和溶液不飽和溶液)+教學(xué)設(shè)計(jì)-2024-2025學(xué)年九年級化學(xué)人教版(2024)下冊
- 礦山隱蔽致災(zāi)普查治理報(bào)告
- 副總經(jīng)理招聘面試題與參考回答(某大型國企)2024年
- PDCA循環(huán)提高護(hù)士培訓(xùn)率
- 《獅子王》電影賞析
- 河北省保定市定州市2025屆高二數(shù)學(xué)第一學(xué)期期末監(jiān)測試題含解析
- 中醫(yī)護(hù)理人文
- 2024-2030年中國路亞用品市場銷售模式與競爭前景分析報(bào)告
- 貨物運(yùn)輸安全培訓(xùn)課件
- 前端年終述職報(bào)告
- 市人民醫(yī)院關(guān)于開展“改善就醫(yī)感受提升患者體驗(yàn)主題活動(dòng)”2023-2025年實(shí)施方案及資料匯編
評論
0/150
提交評論