Re: [討論] 關於try catch rethrow函數已回收

看板MATLAB作者 (鈴弓)時間14年前 (2011/07/15 11:05), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《susuyumi (鈴弓)》之銘言: ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.213.195

07/15 10:44,
本文係針對版上5520篇文章(#1BERfS-S)作進一步提問
07/15 10:44
這邊我提出我的例子: for i=1:100; for j=[1,2,3,4,5]; switch j case {1} (進行運算過程A) %細部內容包含A1 A2 A3...etc case {2} (進行運算過程B) %細部內容包含B1 B2 B3...etc ... case {5} (進行運算過程E) %細部內容包含E1 E2 E3...etc end end end 我想問的是:當我在進行運算過程E3的時候,發現當中的數值會產生NaN,因此我希望 這筆運算就捨棄,進行下一筆的運算。 (如果能達到,那麼以上就會是最簡單的處理結果) 舉例:當i=3的時候,E3的運算出現了NaN,因此我希望E3在i=3的數值結果捨棄掉 並進行下一次的運算,即進行i=4的運算。 額外問題:有這樣的情形發生時,當i迴圈執行100次後,E3的運算結果,就會在 i=3 那筆資料是「空」的嗎? 如果是→→這代表在E3的部分,迴圈執行了i=1,2, 4~100次計算? 如果否→→迴圈會自己執行i=1,2, 4~101次計算,以符合i總數為100? 是否有辦法將我原本的switch case的寫法,改為try catch的寫法?尤其當我的 運算結果(在E3的時候)是非常容易出現問題的狀況下... 我希望的: 當 E3 運算結果出現 NaN 的時候,跳回最初的i迴圈,重跑一次。 (這邊使用的概念很像是goto) 但matlab上可以這樣用的,似乎只有try catch...... 還是說,其實只要以下簡單的寫法就可以解決問題了? for k=1:20; %E3的運算舉例     if E3(k) == NaN; break end end break %希望跳回到最外面的i迴圈重跑一次 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.213.195 ※ 編輯: susuyumi 來自: 140.123.213.195 (07/15 11:13)

07/15 13:07, , 1F
help continue
07/15 13:07, 1F

07/16 01:47, , 2F
nan不能用== 要用isnan
07/16 01:47, 2F
文章代碼(AID): #1E7ww3M9 (MATLAB)
文章代碼(AID): #1E7ww3M9 (MATLAB)