【问题标题】:determine index and value of first negative peak确定第一个负峰值的索引和值
【发布时间】:2014-12-06 01:47:15
【问题描述】:

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

【问题讨论】:

    标签: matlab


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

    【讨论】:

      猜你喜欢
      • 2023-03-06
      • 2011-01-31
      • 2017-02-22
      • 2021-05-21
      • 1970-01-01
      • 2023-03-16
      • 2023-01-17
      • 2019-12-20
      • 1970-01-01
      相关资源
      最近更新 更多