[SciPy-user] Peak Fitting

Christian Kristukat ckkart at hoc.net
Thu Mar 30 06:43:51 CST 2006


basvandijk at home.nl wrote:
> Hello,
> 
> I would like to integrate some data. The data has a somewhat similar form as the
> picture of the peak in [1]. I think a good function describing the data is:

The peak in  [1] actually is a gaussian, the formula is given below the graph:

amp * exp(-(x-center)**2/(2*width**2))

> I don't know much about linear algebra but I've read I can use a non linear
> least square fitting method to fit the data. Maybe I can also use others? My
> question is can I do this with Scipy and if so how?

with scipy you can do a leastsq fit like this
assuming x and y are arrays with your data:

from scipy import optimize

def residuals(amp,center,width):
    return y-(amp * exp(-(x-center)**2/(2*width**2)))

guess = [2.0, 4.5, 0.2]   # the inital guess for the parameters

out = optimize.leastsq(residuals, guess)

solution = out[0]

print solution

Regards, Christian



More information about the SciPy-user mailing list