Re: [問題] for-end段程式看不懂

看板MATLAB作者 (!H45)時間13年前 (2012/07/02 19:20), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《batista5566 (炸彈摔5566)》之銘言: : 各位好, : 我最近拿到一個程式,其中一段是 : 「 : for i=1:length(left) : [B_value(i) B_loc(i)] = max(x1(left(i):Bight(i))); 從 x1(left(i)) 到 x1(Bight(i)) 之間找個最大值 B_value(i) 記錄這最大值 B_loc(i) 記錄這最大值的位置 : B_loc(i) = B_loc(i)-1+left(i); 把 B_loc(i) 減掉 1 再加上 left(i) 理論上 B_loc(i) 就會是 x1 的(局部)最大值的索引值? : [A_value(i) A_loc(i)] = min(x1(left(i):B_loc(i))); 從 x1(left(i)) 到 x1(B_loc(i)) 之間找個最小值 A_value(i) 記錄這最小值 A_loc(i) 記錄這最小值的位置 : A_loc(i) = A_loc(i)-1+left(i); 把 A_loc(i) 減掉 1 再加上 left(i) 理論上 A_loc(i) 就會是 x1 的(局部)最小值的索引值? : [C_value(i) C_loc(i)] = min(x1(left(i):Bight(i))); 從 x1(left(i)) 到 x1(Bight(i)) 之間找個最小值 C_value(i) 記錄這最小值 C_loc(i) 記錄這最小值的位置 : C_loc(i) = C_loc(i)-1+left(i); 把 C_loc(i) 減掉 1 再加上 left(i) 理論上 C_loc(i) 就會是 x1 的(局部)最小值的索引值? : end : A_loc=A_loc(find(A_loc~=0)); 將 A_loc 等於 0 的部分移除 看起來似乎等同於 A_loc(A_loc == 0) = []; ? : B_loc=B_loc(find(B_loc~=0)); 將 B_loc 等於 0 的部分移除 : C_loc=C_loc(find(C_loc~=0)); 將 C_loc 等於 0 的部分移除 : 」 : 我想請問一下,這段程式的目的在做什麼? 看起來像是在找 x1 某段最大值與最小值的位置 : 因為我使用dat檔可以正確顯示A_loc、B_loc跟C_loc的位置, : 然而用mat檔,卻會讓B_loc跟C_loc的數值完全相同, 上面我都沒看到 dat 和 mat 相關的程式段落... : 經過觀察過,應該是上面那段程式有問題,不知道該如何解決? : 謝謝。 程式沒問題,100% 可以運作。 有問題的是預期結果和實際結果是什麼?這部分沒寫出來的話,沒人知道「正確」的程 式是什麼。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.247.22

07/03 11:51, , 1F
感謝您。
07/03 11:51, 1F
文章代碼(AID): #1FyOFcNb (MATLAB)
文章代碼(AID): #1FyOFcNb (MATLAB)