Re: FWHM, InterpolationFunction & Solve
- To: mathgroup at smc.vnet.net
- Subject: [mg80530] Re: FWHM, InterpolationFunction & Solve
- From: "Kevin J. McCann" <Kevin.McCann at umbc.edu>
- Date: Fri, 24 Aug 2007 02:04:05 -0400 (EDT)
- Organization: University of Maryland, Baltimore County
- References: <fagstu$8du$1@smc.vnet.net>
If your data are noisy, I would recommend the use of a Savitzky-Golay filter. The gist of this is that a polynomial of some degree d is fit (LSQ) to 2N+1 data points, both d and N are user determined. Then the middle data point of the 2N+1 is replaced with the curve fit value. The process proceeds by sliding one point to the right. All of these operations happen on the original data. This is a smoothing filter that removes some of the "higher frequency" stuff on the assumption that it is due to "noise". I have a NB with some details. If you would like, I could send it to you. Kevin Mathieu G wrote: > Hello, > I have a set of discrete data, representing a peak. > I would like to compute the Full Width at Half Maximum (FWHM) of this peak. > For that I would like to know which points correspond to half the peak value. > SO far I was considering using an interpolating function, but this does > not seem to work: > > > DataFile = Import["FFT.dat"]; > CleanDataFile = Part[DataFile, 2 ;; Length[DataFile]]; > WorkingData = CleanDataFile[[All, {1, 3}]]; > > ListLinePlot[WorkingData, PlotRange -> All] > > MaximumFFTY = Max[WorkingData[[All, 2]]]; > MaximumFFTPosition = Position[WorkingData, MaximumFFTY][[1, 1]]; > MaximumFFTX = WorkingData[[MaximumFFTPosition, 1]]; > > DataInterpolation = Interpolation[WorkingData]; > > Solve[DataInterpolation[x] == MaximumFFTValue/2, x] > > > Can you help me please? How would you do that? > I then want to compute the area under the peak: > > Integrate[DataInterpolation[x], {x, BegFWHM, EndFWHM}] > > Which works fine with the interpolating function. > > Thank you for your help! > Mathieu >