如何解决lmfit使具有多个峰的数据适合“错误”峰
使用此代码(在代码段之前,我刚刚读入数据,效果很好,在代码段之后,我只做了标签等)
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”在任何地方都将变为零。
解决方法
我从没使用过lmfit,但是问题很可能是您试图适应整个数据区域。考虑到您传递给.fit
调用的整个数据区域,结果拟合可能是最佳和正确的。
您应该尝试仅将相关数据传递给拟合。在您的情况下,xdata
只能是大约5.5到7.5(或这些数字附近的某个地方)的数据点集。当然,ydata
也必须适应这些值。这样的配合应该可以很好地工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。