Code covered by the BSD License  

Highlights from
Lorentzian fit

4.0

4.0 | 1 rating Rate this file 108 Downloads (last 30 days) File Size: 3.01 KB File ID: #33775
image thumbnail

Lorentzian fit

by

 

15 Nov 2011 (Updated )

LORENTZFIT fits a single- or multi-parameter Lorentzian function to data

| Watch this File

File Information
Description

  LORENTZFIT fits a single- or multi-parameter Lorentzian function to data
 
    LORENTZFIT(X,Y) returns YPRIME(X), a Lorentzian fit to the data
    found using LSQCURVEFIT. The function Y(X) is fit by the model:
        YPRIME(X) = P1./((X - P2).^2 + P3) + C.
 
    [YPRIME PARAMS RESNORM RESIDUAL] = LORENTZFIT(X,Y) returns YPRIME(X)
    values in addition to fit-parameters PARAMS = [P1 P2 P3 C]. The RESNORM
    and RESIDUAL outputs from LSQCURVEFIT are also returned.
 
    [...] = LORENTZFIT(X,Y,P0) can be used to provide starting
    values (P0 = [P01 P02 P03 C0]) for the parameters in PARAMS.
 
    [...] = LORENTZFIT(X,Y,P0,BOUNDS) may be used to define lower
    and upper bounds for the possbile values for each parameter in PARAMS.
        BOUNDS = [LB1 LB2 LB3 LB4;
                  UB1 UB2 UB3 UB4].
    If the user does not wish to manually define values for P0, it may be
    enetered as an empty matrix P0 = []. In this case, default values will
    be used. The default bounds for all parameters are (-Inf,Inf).
 
    [...] = LORENTZFIT(X,Y,P0,BOUNDS,NPARAMS) may be used to specify the
    number of parameters used in the Lorentzian fitting function. The
    number of parameters defined in P0 and BOUNDS must match the function
    specified by NPARAMS. If the user does not wish to manually define
    values for P0 or BOUNDS, both may be enetered as empty matricies:
    P0 = []; BOUNDS = [].
 
    -NPARAMS options
        
            '1' - Single parameter Lorentzian (no constant term)
                    L1(X) = 1./(P1(X.^2 + 1))
 
            '1c' - Single parameter Lorentzian (with constant term)
                    L1C(X) = 1./(P1(X.^2 + 1)) + C
  
            '2' - Two parameter Lorentzian (no constant term)
                    L2(X) = P1./(X.^2 + P2)
 
            '2c' - Two parameter Lorentzian (with constant term)
                    L2C(X) = P1./(X.^2 + P2) + C
 
            '3' - Three parameter Lorentzian (no constant term)
                    L3(X) = P1./((X - P2).^2 + P3)
 
  [DEFAULT] '3c' - Three parameter Lorentzian (with constant term)
                    L3C(X) = P1./((X - P2).^2 + P3) + C
 
    X and Y must be the same size, numeric, and non-complex. P0 and BOUNDS
    must also be numeric and non-complex. NPARAMS is a character array.
 
    Examples:
        x = -16:0.1:35;
        y = 19.4./((x - 7).^2 + 15.8) + randn(size(x))./10;
        [yprime1 params1 resnorm1 residual1] = lorentzfit(x,y,[20 10 15 0]);
        figure; plot(x,y,'b.','LineWidth',2)
        hold on; plot(x,yprime1,'r-','LineWidth',2)
 
        [yprime2 params2 resnorm2 residual2] = lorentzfit(x,y,[],[],'3');
        figure; plot(x,y,'b.','LineWidth',2)
        hold on; plot(x,yprime2,'r-','LineWidth',2)
 
    See also: lsqcurvefit.

MATLAB release MATLAB 7.7 (R2008b)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (4)
17 Apr 2012 Ramu

Yea, Thanks for the script. It was very helpful

17 Apr 2012 Jered Wells

Thank you, Ramu, for your comments. I trust that all of your questions have been answered.

17 Apr 2012 Ramu

I changed the 3 parameter fitting fucntion to
F= p(4) + (2*p(1)./pi)*(p(3)./(4*(x-p(2)).^2 + p(3).^2))

now p1 gives Area, p2 gives the center, p3 gives the FWHM and p4 gives the y offset.

17 Apr 2012 Ramu

I tried this function on my data and found that parameter calculated are very different from the one I get from Orgin.

I recalculated the width by taking the sq. root of P3. Is that the correct way ?

Updates
13 Feb 2012

Cleaned up description

17 Feb 2012

Documentation updated to match MATLAB standard for help file
H1 line has been included
Error checking included
Outputs modified for easier use

09 Mar 2012

Included option to select one, two, or three parameter Lorentzian model with or without constant parameter.
Improved documentation
Provided two additional outputs from LSQCURVEFIT: RESNORM and RESIDUAL.

17 Apr 2012

Better identified default functionality in help file

Contact us