Re: [問題]跳出迴圈問題,多謝指教:)已回收

看板MATLAB作者 (eji)時間15年前 (2010/11/16 20:19), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《pkpkok (等不到人內)》之銘言: : 標題: [問題]跳出迴圈問題,多謝指教:) : 時間: Tue Nov 16 14:36:27 2010 : : : 在多個迴圈中,如其值目標已達到我想要的 : : 我想直接跳出迴圈,讓程式終止該如何設計? : : EX: : : for i=1:35 : : for j=1:32 : : for k=1:30 : : x=a(i)+b(j)+c(k) : : end : : end : : end : : (跳出迴圈至此,執行後續語法,想節省後續非必要的處理時間)<--- : : 我是想當X假設等於100時直接跳出多重迴圈 : : 因為MATLAB沒有GOTO的功能,想請問這邊我該如何設計使程式直接跳出多重迴圈 : : 感謝您的回答:) : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 140.135.120.172 : 推 bagaSu:寫成function 使用 return 即可 11/16 15:05 法一:寫成function 條件滿足便return回傳值 舉例: function x=ptttest; for i=1:100000 for j=1:32 for k=1:30 x=i+j+k; if x==1000 return end end end end 存為m-file後再呼叫即可 x=ptttest : 推 tblu:break 11/16 15:32 : → pkpkok:break要如何使用才能跳出三個迴圈呢?感謝您的幫忙:) 11/16 15:47 法二:使用break 但break一次只跳出一層迴圈 所以自己寫個旗標 最裡面的判斷式成立後改寫旗標值並跳出 其他外層的迴圈判斷旗標值變動沒 變了就跳出 舉例: index=0; for i=1:100000 for j=1:32 for k=1:30 x=i+j+k; if x==1000 index=1; break end end if index==1 break end end if index==1 break end end x 兩種結果是一樣的 速度方面直接複製貼上的話是 function快 但存檔完執行的話兩個速度差不多 break還快一點點 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.250.7.46

11/18 12:46, , 1F
謝謝你:)感激不盡
11/18 12:46, 1F

09/15 17:45, , 2F
3q3q
09/15 17:45, 2F
文章代碼(AID): #1CudRhSH (MATLAB)
文章代碼(AID): #1CudRhSH (MATLAB)