任务是使用高斯曲线拟合数据范围(X和Y)的一些块(cand_peaks_xs)。问题是结果是线性的。
for i in cand_peaks_xs:
# approximate gauss
x = X[i[0]:i[1]]
y = Y[i[0]:i[1]]
try:
mean = numpy.mean(x)
sigma = numpy.std(x)
param, cov = curve_fit(self.gauss, x, y, p0=[y.max(), mean, sigma])
self.ax1.plot(x, self.gauss(x, *param), c='r')
except:
pass
这里的红线是我用这个程序得到的。
这是高斯的定义
def gauss(self, x, a, x0, sigma):
return a*exp(-(x-x0)**2/(2*sigma**2))
答案 0 :(得分:0)
def gauss(self, x, a, x0, sigma):
return a*numpy.exp(-(x-x0)**2/(2*sigma**2))