http://www.perlmonks.org?node_id=800866


in reply to Re^2: Finding local maxima/minima in noisy, pediodic data
in thread Finding local maxima/minima in noisy, pediodic data

No, I'm interested in the extrema of the short wavelength pulses.

However, I can use your suggestion about long term averages for that, too.

A possible strategy: In the first pass I generate a smoothed dataset from the original using a moving average of about 200 points (or 2-3 periods of the short pulses). This will smoothen out the short wavelength pulses but retain the long term characteristics. Then I compare the original with this smoothed dataset point by point: if it is below the average I need to look for a minimum, if it is above, I look for a maximum.
  • Comment on Re^3: Finding local maxima/minima in noisy, pediodic data

Replies are listed 'Best First'.
Re^4: Finding local maxima/minima in noisy, pediodic data
by mpeg4codec (Pilgrim) on Oct 13, 2009 at 20:20 UTC

    With any sort of filter (moving average or low pass) you will induce a delay on the response. That is to say, if you're at a peak in the filtered data and want to match it with the original data, you will need to look back a fixed period of time.

    For what it's worth, I think the low pass filter will be much more applicable to your goal since the noise is high frequency periodic. The alpha I provided above does a fine job smoothing out the noise but leaving the pulses of the desired frequency.