Home  |  About Us  |  Link To Us  |  FAQ  |  Contact

Peak Fitter 1.0

Date Added: July 05, 2013  |  Visits: 236

A command-line peak fitting program for time-series signals, written as a self-contained Matlab function in a single m-file. Uses an non-linear optimization algorithm to decompose a complex, overlapping-peak signal into its component parts. The objective is to determine whether your signal can be represented as the sum of fundamental underlying peaks shapes. Accepts signals of any length, including those with non-integer and non-uniform x-values. Fits Gaussian, exponentially-broadened Gaussian, Lorentzian, Pearson, and Logistic shapes (expandable to other shapes). This is a command-driven version, usable from a remote terminal. It is capable of making multiple trial fits with sightly different starting values and taking the best one.>> help peakfit PEAKFIT(signal); Performs a single iterative least-squares fit of a single Gaussian peak to the data matrix "signal", which has x values in row 1 and Y values in row 2 (e.g. [x y]) PEAKFIT(signal,center,window); Fits a single Gaussian peak to a portion of the matrix "signal". The portion is centered on the x-value "center" and has width "window" (in x units). PEAKFIT(signal,center,window,NumPeaks); "NumPeaks" = number of peaks in the model (default is 1 if not specified). PEAKFIT(signal,center,window,NumPeaks,peakshape); Specifies the peak shape of the model: "peakshape" = 1-5. (1=Gaussian (default), 2=Lorentzian, 3=logistic, 4=Pearson, and 5=exponentionally broadened Gaussian) PEAKFIT(signal,center,window,NumPeaks,peakshape,extra) Specifies the value of 'extra', used in the Pearson and the exponentionally broadened Gaussian shapes to fine-tune the peak shape. PEAKFIT(signal,center,window,NumPeaks,peakshape,extra,NumTrials); Performs "NumTrials" trial fits and selects the best one (with lowest fitting error). NumTrials can be any positive integer (default is 1). PEAKFIT(signal,center,window,NumPeaks,peakshape,extra,NumTrials,start) Specifies the first guesses vector "firstguess" for the peak positions and widths, e.g. start=[position1 width1 position2 width2 ...] [FitResults,MeanFitError]=PEAKFIT(signal,center,window...) Returns the FitResults vector in the order peak number, peak position, peak height, peak width, and peak area), and the MeanFitError (the percent RMS difference between the data and the model in the selected segment of that data) of the best fit. Example 1: >> x=[0:.1:10];y=exp(-(x-5).^2);peakfit([x' y']) Fits exp(-x)^2 with a single Gaussian peak model. Example 2: >> x=[0:.005:1];y=humps(x);peakfit([x' y'],.3,.7,1,4,3); Fits a portion of the humps function, 0.7 units wide and centered on x=0.3, with a single (NumPeaks=1) Pearson function (peakshape=4) with extra=3 (controls shape of Pearson function). Example 3: >> x=[0:.005:1];y=(humps(x)+humps(x-.13)).^3;smatrix=[x' y']; >> [FitResults,MeanFitError]=peakfit(smatrix,.4,.7,2,1,0,10) Creates a data matrix 'smatrix', fits a portion to a two-peak Gaussian model, takes the best of 10 trials. Returns FitResults and MeanFitError. FitResults = 1 0.4128 3.1114e+008 0.10448 3.4605e+007 2 0.3161 2.8671e+008 0.098862 3.0174e+007 MeanFitError = 0.68048 Example 4: >> peakfit([x' y'],.4,.7,2,1,0,10,[.3 .1 .5 .1]); As above, but specifies the first-guess position and width of the two peaks, in the order [position1 width1 position2 width2]

 Requirements: No special requirements Platforms: Matlab Keyword: Error,  Fitresults,  Fitresultsmeanfiterror Dpeakfitsignalcenterwindow,  Guesses,  Integer,  Numtrials,  Order,  Position,  Positions,  Positive,  Quotfirstguessquot,  Returns,  Start Dposition,  Vector,  Width,  Widths Users rating: 0/10