- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MATLAB 程式設計入門篇程式流程控制
張智星
jang@.tw
.tw/~jang
清大資工系 多媒體檢索實驗室
16-1 迴圈指令
MATLAB 提供兩種迴圈指令,一種是 for 迴圈(For Loop),另一種是 while 迴圈(While Loop)。
for 迴圈的使用語法如下: for 變數 = 向量,
運算式
end
其中變數的值會被依次設定為向量的每一個元素值,來執行介於 for和 end 之間的運算式。
另一種 for 迴圈的使用語法如下:for 變數 = 矩陣,
運算式
end
此時變數的值會被依次設定為矩陣的每一個直行,來執行介於 for 和 end 之間的運算式。
while 迴圈使用語法如下:
while 條件式
運算式;
end
程式流程控制之範例一
下列 for 迴圈會產生一個長度為 6 的調和數列(Harmonic Sequence):
範例16-1 : forLoop01.m
x = zeros(1,6); % 變數 x 是一個 1×6 大小的零矩陣
for i = 1:6
x(i) = 1/i;
end
x % 顯示 x
x =
1.0000 0.5000 0.3333 0.2500 0.2000 0.1667
在上例中,矩陣 x 最初是一個 1×6 大小的零矩陣,在 for 迴圈中,變數 i 的值依次是 1 到 6,因此矩陣 x 的第 i 個元素的值依次被設為 1/i。
我們接著可用分數形式來顯示此數列:
format rat % 使用分數形式來顯式數值
disp(x)
1 1/2 1/3 1/4 1/5 1/6
程式流程控制之範例二
for 迴圈可以是多層或巢狀式(Nested)的,在下例中即產生一個 6×6 的Hilbert 矩陣 h,其中為於第 i 列、第 j 行的元素為 :
範例16-2 : forLoop02.m
h = zeros(6); % 變數 x 是一個 6×6 大小的零矩陣
for i = 1:6
for j = 1:6
h(i,j) = 1/(i+j-1);
end
end
format rat % 使用分數形式來顯式所有數值
h % 顯示 h
h =
1 1/2 1/3 1/4 1/5 1/6
1/2 1/3 1/4 1/5 1/6 1/7
1/3 1/4 1/5 1/6 1/7 1/8
1/4 1/5 1/6 1/7 1/8 1/9
1/5 1/6 1/7 1/8 1/9 1/10
1/6 1/7 1/8 1/9 1/10 1/11
程式流程控制之範例三
在下例中,for 迴圈列出先前產生的 Hilbert 矩陣的每一直行的平方和:
範例16-3 : forLoop01.m
format short % 回到預設形式來顯式所有數值
for i = h
disp(norm(i)^2); % 印出每一行的平方和
End
1.4914
0.5118
0.2774
0.1787
0.1262
0.0944
在上例中,由於 h 是一個矩陣,因此每一次 i 的值就是矩陣 h 的一直行的內容。
程式流程控制之範例四
若要跳出 for 迴圈,可用 break 指令。例如,若要找出最小的 n 值,滿足 n! 10100,可輸入如下:
範例16-4 : break01.m
for i = 1:1000
if prod(1:i) 1e100
fprintf(%g! = %e 1e100\n, i, prod(1:i));
break; % 跳出 for 迴圈
end
end
70! = 1.197857e+100 1e
文档评论(0)