Peak Fitter (Scripts) Publisher's description
from Tom O'Haver
A command-line peak fitting program for time-series signals, written as a self-contained Matlab function in a single m-file
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
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])
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).
"NumPeaks" = number of peaks in the model (default is 1 if not
Specifies the peak shape of the model: "peakshape" = 1-5. (1=Gaussian (default), 2=Lorentzian, 3=logistic, 4=Pearson, and 5=exponentionally broadened Gaussian)
Specifies the value of 'extra', used in the Pearson and the exponentionally broadened Gaussian shapes to fine-tune the peak shape.
Performs "NumTrials" trial fits and selects the best one (with lowest fitting error). NumTrials can be any positive integer (default is 1).
Specifies the first guesses vector "firstguess" for the peak positions and widths, e.g. start=[position1 width1 position2 width2 ...]
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.
>> x=[0:.1:10];y=exp(-(x-5).^2);peakfit([x' y'])
Fits exp(-x)^2 with a single Gaussian peak model.
>> 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).
>> x=[0:.005:1];y=(humps(x)+humps(x-.13)).^3;smatrix=[x' y'];
Creates a data matrix 'smatrix', fits a portion to a two-peak Gaussian model, takes the best of 10 trials. Returns FitResults and MeanFitError.
1 0.4128 3.1114e+008 0.10448 3.4605e+007
2 0.3161 2.8671e+008 0.098862 3.0174e+007
>> 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]
System Requirements:MATLAB 6.5 (R13)
Program Release Status: New Release
Program Install Support: Install and Uninstall