如何解决高斯拟合光谱中的多个峰
我有一个光谱,我试图对其进行高斯拟合,但是当我绘制它时,我意识到这不是一个单一的峰值,而是两个或三个非常接近的峰值。 这是我的代码:
from scipy.optimize import curve_fit
#weighted mean
mean = sum(velo_peak * spec_peak) / sum(spec_peak)
sigma = np.sqrt(sum(spec_peak * (velo_peak - mean)**2) / sum(spec_peak))
def Gauss(velo_peak,a,x0,sigma):
return a * np.exp(-(velo_peak - x0)**2 / (2 * sigma**2))
p0=[max(spec_peak),mean,sigma]
popt,pcov = curve_fit(Gauss,velo_peak,spec_peak,p0)
print("the velocities at the peak are",velo_peak)
plt.plot(velo_peak*1e-9,'k')
plt.plot(velo_peak*1e-9,Gauss(velo_peak,*popt),'r-',label='fit')
我的问题是:有没有办法对多个接近的峰进行拟合
我编辑了这个问题,以便更清楚: 我想对两个峰值进行高斯拟合,从图片中可以看出,该函数仅对单个峰值进行了拟合。任何帮助将不胜感激。
解决方法
在给定的离散时间戳处对高斯分布进行采样,并将其从原始信号中减去。然后它会找到“第二个”堆。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。