三個例子講解MATLAB三種循環(huán)
2017-03-06 by:CAE仿真在線 來源:互聯(lián)網(wǎng)
FOR循環(huán) 在for和end語句之間的{commands}按數(shù)組中的每一列執(zhí)行一次。在每一次迭代中,x被指定為數(shù)組的下一列,即在第n次循環(huán)中,x=array(:, n)。 如? for n=1:10 x(n)=sin(n*pi/10); end 當有一個等效的數(shù)組方法來解給定的問題時,應避免用For循環(huán)。例如,上面的例子可被重寫為 ? n=1:10; ? x=sin(n*pi/10) 第二種方式執(zhí)行速度更快。 為了得到最大的速度,在For循環(huán)(While循環(huán))被執(zhí)行之前,應預先分配數(shù)組。 WHILE循環(huán) 只要在表達式里的所有元素為真,就執(zhí)行while和end語句之間的{commands}。通常,表達式的求值給出一個標量值,但數(shù)組值也同樣有效。在數(shù)組情況下,所得到數(shù)組的所有元素必須都為真??紤]下列例子:
? num=0;EPS=1; ? while (1+EPS)>1 EPS=EPS/2; num=num+1; end
? num num = 53
? EPS=2*EPS EPS = 2.2204e-016
這個例子表明了計算特殊MATLAB值eps的一種方法,它是一個可加到1,而使結(jié)果以有限精度大于1的最小數(shù)值。這里我們用大寫EPS,因此MATLAB的eps的值不會被覆蓋掉。在這個例子里,EPS以1開始。只要(1+EPS)>1為真(非零),就一直求While循環(huán)內(nèi)的命令值。由于EPS不斷地被2除,EPS逐漸變小以致于EPS+1不大于1。(記住,發(fā)生這種情況是因為計算機使用固定數(shù)的數(shù)值來表示數(shù)。MATLAB用16位,因此,我們只能期望EPS接近10-16。)在這一點上,(1+EPS)>1是假(零),于是While循環(huán)結(jié)束。最后,EPS與2相乘,因為最后除2使EPS太小。 IF-ELSE-END結(jié)構(gòu) 如果在表達式中的所有元素為真(非零),那么就執(zhí)行if和end語言之間的{commands}。在表達式包含有幾個邏輯子表達式時,即使前一個子表達式?jīng)Q定了表達式的最后邏輯狀態(tài),仍要計算所有的子表達式。例如,
? apples=10;%number of apples ? cost=apples*25%cost of apples ? if apples>5%give 20% discount for larger purchases cost=(1-20/100)*cost; end ? cost cost = 200
假如有兩個選擇,If-Else-End結(jié)構(gòu)是:
ifexpression commands evaluated if True else commands evaluated if False end 在這里,如果表達式為真,則執(zhí)行第一組命令;如果表達式是假,則執(zhí)行第二組命令。
當有三個或更多的選擇時,If-Else-End結(jié)構(gòu)采用形式 if expression1 commands evaluated if expression1 is True elseif expression2 commands evaluated if expression2 is True elseif expression3 commands evaluated if expression3 is True elseif …… . else commands evaluated if no other expressionis True end
最后的這種形式,只和所碰到的、與第一個真值表達式相關的命令被執(zhí)行;接下來的關系表達式不檢驗,跳過其余的If-Else-End結(jié)構(gòu)。而且,最后的else命令可有可無。
現(xiàn)在我們知道了如何用If-Else-End結(jié)構(gòu)來決策,就有可能提出一種合理的方法來跳出或中斷For循環(huán)和While循環(huán)。 ? EPS=1; ? for num=1:1000 EPS=EPS/2; if (1+EPS)<=1 EPS=EPS*2 break end end
這個例子演示了估算EPS的另一種方法。在這種情況下,For循環(huán)構(gòu)造成要執(zhí)行足夠多的次數(shù)。If-Else-End結(jié)構(gòu)檢驗要看EPS是否變得足夠小。如果是,EPS乘2,break命令強迫For循環(huán)提早結(jié)束,num=53。
在這個例子里,當執(zhí)行break語句時,MATLAB跳到循環(huán)外下一個語句。在現(xiàn)在情況下,它返回到MATLAB的提示符并顯示EPS。如果一個break語句出現(xiàn)在一個嵌套的For循環(huán)或While循環(huán)結(jié)構(gòu)里,那么MATLAB只跳出break所在的那個循環(huán),不跳出整個嵌套結(jié)構(gòu)。
|
相關標簽搜索:三個例子講解MATLAB三種循環(huán) MatLab培訓 MatLab培訓課程 MatLab在線視頻教程 MatLab技術(shù)學習教程 MatLab軟件教程 MatLab資料下載 MatLab代做 MatLab基礎知識 Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓 Abaqus培訓