Re: [問題] for-end段程式看不懂
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):