需要帮助Python将高斯拟合到y = 0时不沿x轴的数据

时间:2016-10-26 23:21:42

标签: python python-3.x curve-fitting gaussian

我搜索了相当数量,还没有找到一个明确的解决方案来解决我的问题。我目前可以将高斯拟合到沿着x轴的任何数据,这是您在查看高斯拟合教程时看到的典型数据集。现在我的数据在x轴上方提升了一定量,所以我不能让我的高斯拟合击中x轴。我的解决方案是仅使用额外的+ y0常量定义高斯函数。我只是不知道如何编写这个!目前我有以下内容。

n = len(xcut)                            
mean = center                           
sigma = sum(ycut*(xcut-mean)**2)/n        

def gaus(x,a,x0,sigma):
     return a*exp(-(x-x0)**2/(2*sigma**2))

popt,pcov = curve_fit(gaus,xcut,ycut,p0=[45,mean,sigma])

Gauss Fit

我想这样做的功能是:

def gaus(x,a,x0,sigma,y0):
     return y0+a*exp(-(x-x0)**2/(2*sigma**2))

但在此之后如何更改参数猜测等?与幅度类似,我会在p0中输入我的猜测吗?

编辑:我可以将我的y0设置为一个我可以猜到的恒定值,并且拟合效果非常好。但这需要我每次为每个数据集做出很好的猜测。这是一种解决方法,但是很痛苦!

任何帮助都会非常感谢!

2 个答案:

答案 0 :(得分:0)

p0是参数初始猜测的向量。所以只需添加另一个数字。

popt,pcov = curve_fit(gaus,xcut,ycut,p0=[45,mean,sigma,initial_y0_guess]

答案 1 :(得分:0)

关于新y0参数的初始猜测的问题编辑,最小x值应该有效。尝试传递min(x)。