【问题标题】:How to estimate parameters of double Gaussian Fit in python如何在python中估计双高斯拟合的参数
【发布时间】:2021-07-28 04:54:09
【问题描述】:

我正在尝试在 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

【问题讨论】:

  • 答案是“通过检查发现的起始值”,因此您只需查看数据即可。否则,您可以使用随机值或数据的分位数。
  • 您也可以查看lmfit,它提供了差分进化或像SO example中所做的那样通过差分进化猜测参数

标签: python curve-fitting gaussian


【解决方案1】:

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

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

#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 可以简单演示(或者可以在网上找到)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    • 2016-01-15
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    • 2017-05-23
    相关资源
    最近更新 更多