繁体   English   中英

频谱中多个峰值的高斯拟合

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM