Re: How to get the maximums of a curve
- To: mathgroup at smc.vnet.net
- Subject: [mg66855] Re: How to get the maximums of a curve
- From: Bill Rowe <readnewsciv at earthlink.net>
- Date: Thu, 1 Jun 2006 06:55:45 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
On 5/31/06 at 6:31 AM, yanshanguke at 163.com (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