matlab 一维列向量次大值 怎么求A为一维列向量,plot(A)后需要求得图形中的一个波谷的坐标(非最小值),相邻的两个波峰刚好是最大值和次大值.

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 13:21:26
matlab 一维列向量次大值 怎么求A为一维列向量,plot(A)后需要求得图形中的一个波谷的坐标(非最小值),相邻的两个波峰刚好是最大值和次大值.

matlab 一维列向量次大值 怎么求A为一维列向量,plot(A)后需要求得图形中的一个波谷的坐标(非最小值),相邻的两个波峰刚好是最大值和次大值.
matlab 一维列向量次大值 怎么求
A为一维列向量,plot(A)后需要求得图形中的一个波谷的坐标(非最小值),相邻的两个波峰刚好是最大值和次大值.

matlab 一维列向量次大值 怎么求A为一维列向量,plot(A)后需要求得图形中的一个波谷的坐标(非最小值),相邻的两个波峰刚好是最大值和次大值.
Ar=[min(A)-1 A];Ar(end)=[];%将A循环右移
Al=[A min(A)-1];Al(1)=[];%将A循环左移
B=find((A>Ar)&(A>Al)==1)%找出所有的波峰,由于第十八个元素和第十九个相等,所以结果体现不出来,但无关紧要
peak=A(B)
[peak_max,peak_sn]=max(A(B))%找出最大值在波峰数组B内的序号,为找次大波峰做准备
peaksub_sn=B(find(A(B)==(max(peak(peak_sn-1),peak(peak_sn+1)))))%找次大波峰,这个序号是原数组的序号
trough=min(A(peaksub_sn:B(peak_sn)))%找出次大波峰和最大波峰之间的最小值
find(trough==A)%提取该波谷的位置