MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: How to get the maximums of a curve

  • To: mathgroup at
  • Subject: [mg66855] Re: How to get the maximums of a curve
  • From: Bill Rowe <readnewsciv at>
  • Date: Thu, 1 Jun 2006 06:55:45 -0400 (EDT)
  • Sender: owner-wri-mathgroup at

On 5/31/06 at 6:31 AM, yanshanguke at (simon yang) wrote:

>Dear everyone, I meet a trouble when try to get the maximums of an
>oscillating curve which is data get from physics experiment. There
>is a lot of noise in the curve, so cannot get the maximums by solve:
>derivative ==0, Then how should I do?

Most likely, the first thing you need to do is reduce or eliminate the noise component in the data. There are a number of possible ways to reduce/eliminate noise depending on what you know. If you know the underlying model then using FindFit to estimate parameters to the underlying model is a possibility. Once this is done, it should be possible to solve: derivative == 0 for the model with the parameters found by FindFit.

However, you indicated the curve you are expecting is oscillating. So, it may not be feasible to use FindFit, particularly if the signal to noise ratio is poor.

Another approach would be to use FFT based techniques. The assumption here is the noise component will be located primarily in the high frequency area of the signal plus noise. Essentially you do an FFT on the data, filter the result with a low pass filter then do an inverse FFT. At this point, you can construct an InterpolatingFunction and look for local maximums. Using FFTs effectively in this manner assumes more than a handful of data points and some knowledge of the maximum frequency expected to occur in the signal. 

Another approach would be to use wavelet based techniques to filter the noise. These approaches need as much data as FFT based techniques to be effective. But they don't require assumptions about the maximum frequency present in the signal.

For fewer data points you might try one of the functions in the package Statistics`DataSmoothing`. MovingMedian is particularly effective if the source of the noise is random impulses.

There are other non-parametric regression techniques that can be used with just a few data points. But I am not aware of an existing Mathematica package that implements these other than one I've created for myself.
To reply via email subtract one hundred and four

  • Prev by Date: Re: New Analytical Functions - Mathematica Verified
  • Next by Date: Re: Format and TeXForm question
  • Previous by thread: Re: How to get the maximums of a curve
  • Next by thread: Re: How to get the maximums of a curve