[英]gaussian fit on multiple peak in a spectrum
我有一个试图在其上进行高斯拟合的光谱,但是当我绘制它时,我意识到这不是一个单一的峰值,而是两个或三个非常接近的峰值。 这是我的代码:
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,spec_peak,'k')
plt.plot(velo_peak*1e-9, Gauss(velo_peak, *popt), 'r-', label='fit')
我的问题是:有没有一种方法可以对多个接近峰进行拟合
我编辑了这个问题,使其更清楚:我想对两个峰进行高斯拟合,从图片中可以看出,function 只在一个峰上进行了拟合。 任何帮助,将不胜感激。
在给定的离散时间标记处对高斯分布进行采样,并将其从原始信号中减去。 然后它将找到“第二个”堆。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.