不对称的峰值适合python

时间:2016-08-09 13:56:45

标签: python curve-fitting

我试图通过将其拟合到Lorentzian来找到我的数据集的峰值(更具体地说,我必须找到峰值出现在B场的什么值)。然而,峰值之后的是不对称的,绝对不是线性的,所以我很难得到一个合适的。这就是我的尝试:

import numpy
import pylab
from scipy.optimize import leastsq # Levenberg-Marquadt Algorithm #

def lorentzian(x,p):
   numerator =  (p[0]**2 )
   denominator = ( x - (p[1]) )**2 + p[0]**2
   y = p[2]*(numerator/denominator)+p[3]*(x-p[0])+p[4]
   return y

def residuals(p,y,x):
   err = y - lorentzian(x,p)
   return err


a = numpy.loadtxt('QHE.dat')
x = a[int(len(a)*8.2/10):,0]
y = a[int(len(a)*8.2/10):,1]


# initial values #
p = [0.4,1.2,1.5,1,1]  # [hwhm, peak center, intensity] #
pbest = leastsq(residuals,p,args=(y,x),full_output=1)
best_parameters = pbest[0]

# fit to data #
fit = lorentzian(x,best_parameters)
peaks.append(best_parameters)

pylab.figure()
pylab.plot(x,y,'wo')
pylab.plot(x,fit,'r-',lw=2)
pylab.xlabel('B field', fontsize=18)
pylab.ylabel('Resistance', fontsize=18)
pylab.show()`

有没有人建议如何处理这个问题?

编辑:

Here is the data file I am trying to fit. The goal is to find the minimum.

0 个答案:

没有答案