确定第一个负峰的指数和价值

时间:2014-12-06 01:47:15

标签: matlab

我正在解决一个使用移动平均滤波器来消除噪音的功能。在将过滤器应用于输入数据后,如何确定第一个和第二个负峰值的索引和值?

1 个答案:

答案 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。数据不同,但总体逻辑是相同的。但是,这会找到所有峰值 - 局部最大值和最小值。如果您只想找到最小值,只需查看信号的负值而不是绝对值。