作者H45 (!H45)
看板MATLAB
标题Re: [问题] for-end段程式看不懂
时间Mon Jul 2 19:20:03 2012
※ 引述《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
1F:推 batista5566:感谢您。 07/03 11:51