【发布时间】:2020-10-20 07:22:52
【问题描述】:
使用此代码(在 sn-p 之前我只是读入数据,效果很好,在 sn-p 之后我只是做标签等)
plt.errorbar(xdata, ydata, yerr, fmt='.', label='Data')
model = models.GaussianModel()
params = model.make_params()
params['center'].set(6.5)
#params['center'].vary = False
fit = model.fit(ydata, params=params, x=xdata, weights=1/yerr)
print(fit.fit_report())
plt.plot(xdata, fit.best_fit, label='Fit')
我尝试拟合最后一个峰值(大约在 x=6.5 处)。但正如您在图片中看到的那样,代码并没有这样做。谁能告诉我这是为什么?
编辑:如果我运行params['center'].vary = False 行,那么“fit”就会随处变为零。
【问题讨论】:
-
尝试限制拟合范围,或者您可以考虑两个可能适合两个峰值的高斯叠加。由一个单一的钟形曲线组成的模型只是不适合您肉眼所见的数据。