如何在python中估计双高斯拟合的参数

时间:2021-05-05 20:48:24

标签: python curve-fitting gaussian

我正在尝试使用 Python 中的 scipy 和最小二乘法学习高斯拟合。

我还有一个问题与此问题的答案有关 How to fit a double Gaussian distribution in Python?,

从答案的代码中,我如何估计参数c1, mu1, sigma1, c2, mu2, sigma2

params = [c1, mu1, sigma1, c2, mu2, sigma2],因为我想使用 leastsq

1 个答案:

答案 0 :(得分:0)

希望这个答案不会太晚.. 有一种简单的方法可以实际估计这些参数。

这就是我在自己的代码中对光谱进行高斯拟合的方法:

#Détermination des paramètres initiaux
            mu0, m = xdata[roiDeb], ydata[roiDeb]
            for j in range(roiDeb+1, roiFin+1) :
                if ydata[j] > m:
                    mu0 = xdata[j]
                    m = ydata[j]
            h0 = m
            fwhmd, fwhmf, sigma0 = ydata[roiDeb], ydata[roiFin+1], 0
            for j in range(roiDeb, mu0+1) :
                if ydata[j] > h0/2 :
                    fwhmd = j
                    break
            for j in range(mu0, roiFin+1) :
                if ydata[j] < h0/2 :
                    fwhmf = j
                    break
            sigma0 = (fwhmf-fwhmd)/2.355

要确定质心,您只需执行 if 条件并检查您感兴趣区域中的较高 y 值。

然后您可以计算两侧的半高宽 (FWHM)。

完成公式:sigma = FWHM / 2.355 可以简单演示(或者可以在网上找到)

我让你自己发现如何使用这些值进行高斯拟合...