【发布时间】:2014-12-06 01:47:15
【问题描述】:
我正在解决一个使用移动平均滤波器去除噪声的函数。将过滤器应用于输入数据后,如何确定第一个和第二个负峰值的索引和值?
【问题讨论】:
标签: matlab
我正在解决一个使用移动平均滤波器去除噪声的函数。将过滤器应用于输入数据后,如何确定第一个和第二个负峰值的索引和值?
【问题讨论】:
标签: matlab
在数据的负上使用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。数据不同,但整体逻辑是一样的。但是,这会找到 所有 峰值 - 局部最大值和最小值。如果您只想找到最小值,只需查看信号的负数而不是绝对值即可。
【讨论】: