- 积分
- 52
- 注册时间
- 2002-10-30
- 仿真币
-
- 最后登录
- 1970-1-1
|
MATLAB新手教學 (2) 控制流程
對於初次接觸MATLAB的人,控制流程可以說是非常重要的,有時候您可能須要自行撰寫特殊的程式碼或完成一系列的動作時,特別適合使用控制流程。MATLAB提供四種控制流程結構。它們是:For迴圈,While迴圈和If-Else-End結構與Sitch Case。由於這些結構經常包含大量的MATLAB命令,故經常出現在M文件中,而不是直接加在MATLAB提示符下
For 迴圈
For迴圈允許一組命令以固定與預定的次數重復。
For迴圈的一般形式是:
for x = 起始值:間隔值:終止值
.....執行命令.....
end
在for和end語句之間的.....執行命令.....
就會按 起始值:間隔值:終止值執行
其中間隔值預設為1
例如,
>>for n=1:10
x(n)=sin(n*pi/10);
>>end
>>x
x =
Columns 1 through 7
0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090
Columns 8 through 10
0.5878 0.3090 0.0000
對n等於1到10,求sin(n*pi/10)的值,直至下一個end語句。
第一次通過For迴圈n=1,第二次,n=2,如此繼續,直至n=10。在n=10以後,For迴圈結束,然後求end語句後面的任何命令值
語句1 :10 是一個標準的MATLAB陣列創建語句。在For迴圈內接受任何有效的MATLAB
B陣列。
>>data=[1 3 5;2 4 6]
data =
1 3 5
2 4 6
>>for n=data
x=n(2)-n(1)
>>end
x =
1
x =
1
x =
1
巢狀for迴圈
最常使用於矩陣運算
for x1 = 起始值:間隔值:終止值
for x2 = 起始值:間隔值:終止值
.....執行命令.....
end
end
建立一5*5矩陣
>> for I = 1:5
for J = 1:5
A(I,J) = 1/(I+J-1);
end
end
>> A
A =
1.0000 0.5000 0.3333 0.2500 0.2000
0.5000 0.3333 0.2500 0.2000 0.1667
0.3333 0.2500 0.2000 0.1667 0.1429
0.2500 0.2000 0.1667 0.1429 0.1250
0.2000 0.1667 0.1429 0.1250 0.1111
While 迴圈
與For迴圈以固定次數求一組命令的值相反,While 迴圈以不定的次數求一組語句的值
?
While迴圈的一般形式是:
while 條件式
.....執行命令.....
end
只要在條件式裏的所有元素為真,就執行while和end 語句之間的.....執行命令.....。
考慮下列例子:
如果norm(E+F-E,1) > 0一直成立
則它會一直跑E = E + F; F = A*F/N; N = N + 1;
>>E = 0*A; F = E + eye(size(E)); N = 1;
while norm(E+F-E,1) > 0
E = E + F;
F = A*F/N;
N = N + 1;
end
E =
3.3206 1.2579 0.8769 0.6768 0.5525
1.2579 1.7774 0.5718 0.4543 0.3776
0.8769 0.5718 1.4344 0.3524 0.2973
0.6768 0.4543 0.3524 1.2904 0.2478
0.5525 0.3776 0.2973 0.2478 1.2134
If-Else-End結構來提供。最簡單的If-Else-End結構是
if 條件式
.....執行命令.....
end
如果在運算式中的所有元素為真(非零),那就執行if和end語言之間的.....執行命令.....。
例如,
>>a=10; b=a*25
b =
250
>>if a>5
b=(1-20/100)*b;
>>end
b =
200
假如有兩個選擇,If-Else-End結構是:
if 條件式
.....執行命令1.....
else
.....執行命令2.....
end
在這裏,如果運算式為真,則執行第一組命令;如果運算式是假,則執行第二組命令。
當有三個或更多的選擇時,If-Else-End結構採用形式
if 條件式1
.....執行命令1.....
elseif 條件式2
.....執行命令2.....
elseif 條件式3
.....執行命令3.....
elseif ……
.
.
.
else
.....除以上之外的命令......
end
最後的else命令可有可無
switch.....case
與前面之if-else-end 敘述相同的條件式亦可利用SWITCH 之敘述方式有時會更有條理化。SWITCH 之陳述型式如下:
switch 條件式1
case 變數值1或索引值1
.....執行命令1.....
case 變數值2或索引值2
.....執行命令2.....
otherwise
.....除以上之外的命令......
end
只要第一個 CASE 的條件相符合時,其後之敘述指令即會被執行。若CASE 之條件是以數個單元之集合表示(如第二個CASE),則只要其中一單元符合SWITCH後之條件,即會執行第二CASE下之指令陳述。若所有條件均不符合,則會執行OTHERWISE後之指令陳述。若上面所設立之條件均不符合時,則什麼都不執行,摸著鼻子就離開了。不論如何,僅其中一個CASE的內容會被執行,執行後即會跳到 END後面之敘述去執行下一段之指令。
大家可以試試 |
|