




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
MATLAB程式設(shè)計(jì)入門篇
程式流程控制張智星清大資工系多媒體檢索實(shí)驗(yàn)室116-1迴圈指令MATLAB提供兩種迴圈指令,一種是for迴圈(ForLoop),另一種是while迴圈(WhileLoop)。for迴圈的使用語(yǔ)法如下:for變數(shù)=向量, 運(yùn)算式 end其中變數(shù)的值會(huì)被依次設(shè)定為向量的每一個(gè)元素值,來(lái)執(zhí)行介於for和end之間的運(yùn)算式。另一種for迴圈的使用語(yǔ)法如下:for 變數(shù)=矩陣, 運(yùn)算式 end此時(shí)變數(shù)的值會(huì)被依次設(shè)定為矩陣的每一個(gè)直行,來(lái)執(zhí)行介於for和end之間的運(yùn)算式。while迴圈使用語(yǔ)法如下: while條件式 運(yùn)算式; end2程式流程控制之範(fàn)例一下列for迴圈會(huì)產(chǎn)生一個(gè)長(zhǎng)度為6的調(diào)和數(shù)列(HarmonicSequence):範(fàn)例16-1:forLoop01.m x=zeros(1,6); %變數(shù)x是一個(gè)1×6大小的零矩陣 fori=1:6 x(i)=1/i; end x %顯示x x= 1.00000.50000.33330.25000.20000.1667在上例中,矩陣x最初是一個(gè)1×6大小的零矩陣,在for迴圈中,變數(shù)i的值依次是1到6,因此矩陣x的第i個(gè)元素的值依次被設(shè)為1/i。我們接著可用分?jǐn)?shù)形式來(lái)顯示此數(shù)列: >>formatrat %使用分?jǐn)?shù)形式來(lái)顯式數(shù)值
>>disp(x)
11/21/31/41/51/63程式流程控制之範(fàn)例二for迴圈可以是多層或巢狀式(Nested)的,在下例中即產(chǎn)生一個(gè)6×6的Hilbert矩陣h,其中為於第i列、第j行的元素為:範(fàn)例16-2:forLoop02.m h=zeros(6); %變數(shù)x是一個(gè)6×6大小的零矩陣 fori=1:6 forj=1:6 h(i,j)=1/(i+j-1); end end formatrat %使用分?jǐn)?shù)形式來(lái)顯式所有數(shù)值 h %顯示h h= 11/21/31/41/51/6 1/21/31/41/51/61/7 1/31/41/51/61/71/8 1/41/51/61/71/81/9 1/51/61/71/81/91/10 1/61/71/81/91/101/114程式流程控制之範(fàn)例三在下例中,for迴圈列出先前產(chǎn)生的Hilbert矩陣的每一直行的平方和:範(fàn)例16-3:forLoop01.m formatshort %回到預(yù)設(shè)形式來(lái)顯式所有數(shù)值 fori=h disp(norm(i)^2); %印出每一行的平方和 End 1.4914 0.5118 0.2774 0.1787 0.1262 0.0944在上例中,由於h是一個(gè)矩陣,因此每一次i的值就是矩陣h的一直行的內(nèi)容。5程式流程控制之範(fàn)例四若要跳出for迴圈,可用break指令。例如,若要找出最小的n值,滿足n!>10100,可輸入如下:範(fàn)例16-4:break01.m fori=1:1000 ifprod(1:i)>1e100 fprintf('%g!=%e>1e100\n',i,prod(1:i)); break; %跳出for迴圈
end end 70!=1.197857e+100>1e100
6程式流程控制之範(fàn)例五在一個(gè)迴圈內(nèi)若要直接跳至到此迴圈下一回合的執(zhí)行,可使用continue指令。範(fàn)例16-5:continue01.m x=[1-23-45]; posTotal=0; fori=1:length(x) ifx(i)<0,continue;end %若x(i)小於零,跳到此迴圈的下一回合
posTotal=posTotal+x(i); end posTotal %顯示posTotal的值 posTotal= 9上述範(fàn)例中,我們計(jì)算向量x的正元素的總和,因此只要遇到x(i)是負(fù)數(shù),即可使用continue指令來(lái)直接跳到此迴圈的下一個(gè)回合來(lái)繼續(xù)執(zhí)行。Continue指令從MATLAB6.x才開始支援,若是使用MATLAB5.x,可用if–then–else來(lái)達(dá)到相同的功能。7程式流程控制之範(fàn)例六先前產(chǎn)生調(diào)和數(shù)列的例子,亦可用while迴圈改寫如下:範(fàn)例16-6:while01.m x=zeros(1,6); i=1; whilei<=6 x(i)=1/i; i=i+1; end x %顯示x x= 1.00000.50000.33330.25000.20000.16678程式流程控制之範(fàn)例七若要用while指令找出最小的n值,使得n!>10100,可輸入如下:範(fàn)例16-7:while02.m n=1; whileprod(1:n)<1e100 n=n+1 end fprintf('%g!=%e>1e100\n',n,prod(1:n)); 70!=1.197857e+100>1e100與前述的for迴圈相同,在任何時(shí)刻若要跳出while迴圈,亦可使用break指令;若要跳到下一回合的while迴圈,也可以使用continue指令。無(wú)論是for或while迴圈,均會(huì)降低MATLAB的執(zhí)行速度,因此盡量使用向量化的運(yùn)算(VectorizedOperations)而盡量少用迴圈。break指令若用在多重迴圈中,每次只跳出包含break指令的最內(nèi)部迴圈。916-2條件指令MATLAB支援二種條件指令(BranchingCommand,或中譯成「分支指令」),一種是if-then-else條件指令,另一種是MATLAB在第五版之後開始支援的switch-case-otherwise條件指令,以下分述之。最常用的條件指令是if-then-else,其使用語(yǔ)法為: if 條件式 運(yùn)算式一; else
運(yùn)算式二; end當(dāng)條件式成立時(shí),MATLAB將執(zhí)行運(yùn)算式一,否則,就執(zhí)行運(yùn)算式二。若不需使用運(yùn)算式二,則可直接省略else和運(yùn)算式二。10程式流程控制之範(fàn)例八在數(shù)值運(yùn)算的過(guò)程中,若變數(shù)值為NaN(即NotANumber)時(shí),我們要立刻印出警告訊息,可輸入如下例:範(fàn)例16-8:if01.m x=0/0; ifisnan(x) disp('Warning:NaNdetected!'); end Warning:Dividebyzero. … Warning:NaNdetected!在上例中,第一個(gè)警告訊息是MATLAB自動(dòng)產(chǎn)生的,第二個(gè)警告訊息則是我們的程式碼產(chǎn)生的,其中isnan(x)可用於判斷x是否為NaN,若是,則傳回1(真),否則即傳回0(偽)。11程式流程控制之範(fàn)例九在下例中,我們可根據(jù)向量y的元素值為奇數(shù)或偶數(shù),來(lái)顯示不同的訊息:範(fàn)例16-9:if02.m y=[03416]; fori=1:length(y) ifrem(y(i),2)==0 fprintf('y(%g)=%giseven.\n',i,y(i)); else fprintf('y(%g)=%gisodd.\n',i,y(i)); end end y(1)=0iseven. y(2)=3isodd. y(3)=4iseven. y(4)=1isodd. y(5)=6iseven.上述的if-then-else為雙向條件,亦即程式只會(huì)執(zhí)行「運(yùn)算式一」或「運(yùn)算式二」,不會(huì)有第三種可能。12程式流程控制之範(fàn)例十MATLAB亦可執(zhí)行多向條件,若要進(jìn)行更多向的條件,只需一再重覆elseif即可。例如,欲判斷y向量之元素是屬於3n、3n+1、或3n+2,可輸入如下:範(fàn)例16-10:if03.m y=[34592]; fori=1:length(y) ifrem(y(i),3)==0 fprintf('y(%g)=%gis3n.\n',i,y(i)); elseifrem(y(i),3)==1 fprintf('y(%g)=%gis3n+1.\n',i,y(i)); else fprintf('y(%g)=%gis3n+2.\n',i,y(i)); end end y(1)=3is3n. y(2)=4is3n+1. y(3)=5is3n+2. y(4)=9is3n. y(5)=2is3n+2.13switch-case-otherwise指令MATLAB在第五版開始支援switch-case-otherwise的多向條件指令,其使用語(yǔ)法如下: switchexpression casevalue(1) statement(1) casevalue(2) statement(2) casevalue(n-1) statement(n-1) otherwise statement(n) end在上述語(yǔ)法中,expression為一數(shù)值或字串,當(dāng)其值和value(k)相等時(shí),MATLAB即執(zhí)行statement(k)並跳出switch指令。若expression不等於value(k),k=1,2,…,n-1,則MATLAB會(huì)執(zhí)行statement(n)並跳出switch指令。14程式流程控制之範(fàn)例十一欲根據(jù)月份來(lái)判斷其季別,可輸入如下:範(fàn)例16-11:switch01.m formonth=1:12 switchmonth case{3,4,5} season='Spring'; case{6,7,8} season='Summer'; case{9,10,11} season='Autumn'; case{12,1,2} season='Winter'; end fprintf('Month%d===>%s.\n',month,season); end Month1===>Winter. . . . . . . Month12===>Winter.15程式流程控制之範(fàn)例十二 如果expression是字串,那麼若要在case之後比對(duì)多個(gè)字串,就必需使用字串的異值陣列(CellArreyofStrings):範(fàn)例16-12:switch02.m month={'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep'}; fori=1:length(month) switc
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 煙草店轉(zhuǎn)讓合同范本
- 小區(qū)網(wǎng)絡(luò)配套合同范本
- 農(nóng)業(yè)工具轉(zhuǎn)讓合同范本
- 店鋪收購(gòu)意向合同范本
- 婚慶設(shè)備租賃合同范本
- 家庭小院托管合同范本
- 木門地板安裝合同范本
- 教育機(jī)構(gòu)培訓(xùn)合同范本
- 鋼材購(gòu)買合同范本
- 倫敦買房合同范本
- 詳解2021年《關(guān)于優(yōu)化生育政策促進(jìn)人口長(zhǎng)期均衡發(fā)展的決定》ppt
- 游泳池經(jīng)營(yíng)方案
- 渠道醫(yī)美合伙人招募計(jì)劃
- 空調(diào)機(jī)房吸音墻頂面綜合施工專題方案
- 紅樓夢(mèng)專題元妃省親39課件
- 輔導(dǎo)員工作手冊(cè)
- 半導(dǎo)體物理課件:第二章半導(dǎo)體中雜質(zhì)和缺陷能級(jí)
- 特種設(shè)備事故應(yīng)急演練方案(附總結(jié))
- ISO測(cè)量管理體系內(nèi)審員培訓(xùn)資料
- 電子測(cè)量技術(shù)第5章 數(shù)字測(cè)量方法
- 預(yù)防性健康檢管理制度管理辦法
評(píng)論
0/150
提交評(píng)論