- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
16-程式流程控制 - PowerPoint Presentation
MATLAB 程式設計入門篇:程式流程控制 MATLAB 程式設計入門篇程式流程控制 張智星 (Roger Jang) jang@ /jang 清大資工系 多媒體檢索實驗室 16-1 迴圈指令 MATLAB 提供兩種迴圈指令 for 迴圈(For Loop) while 迴圈(While Loop) Formats of For Loops Format 1: for 變數 = 向量 運算式 end 在上述語法中,變數的值會被依次設定為向量的每一個元素值,來執行介於 for和 end 之間的運算式。 Format 2: for 變數 = 矩陣 運算式 end 在上述語法中,變數的值會被依次設定為矩陣的每一個直行,來執行介於 for 和 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! 1e100,可輸入如下: 範例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 1e100 程式流程控制之範例五 在一個迴圈內若要直接跳至到
文档评论(0)