我正在解决一个使用移动平均滤波器来消除噪音的功能。在将过滤器应用于输入数据后,如何确定第一个和第二个负峰值的索引和值?
答案 0 :(得分:1)
在数据的负数上使用findpeaks
,然后提取前两个元素以提取负峰所在位置的第一个和第二个索引。假设您的信号存储在f
中,您只需执行以下操作:
[peaks, locs] = findpeaks(-f);
p = peaks(1:2);
loc = locs(1:2);
findpeaks
通过查找局部最大值来工作。如果要查找局部最小值(即负峰值),可以将findpeaks
应用于信号的负值,以便局部最小值变为局部最大值,然后应用相同的算法。 loc
将包含负峰值所在的前两个位置,而p
将确定负峰值幅度。
但是,您可能需要使用findpeaks
的输入参数,而不是使用默认值来满足您的数据,但这应该足以让您入门。
如果您无法访问findpeaks
,请查看this post that I wrote to find peaks for FFT data。数据不同,但总体逻辑是相同的。但是,这会找到所有峰值 - 局部最大值和最小值。如果您只想找到最小值,只需查看信号的负值而不是绝对值。