高斯拟合代码

Posted 苦力劳动者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高斯拟合代码相关的知识,希望对你有一定的参考价值。

高斯拟合(Gaussian Fitting)即使用形如:
     
          Gi(x)=Ai*exp((x-Bi)^2/Ci^2)

        的高斯函数对数据点集进行函数逼近的拟合方法。

        其实可以跟多项式拟合类比起来,不同的是多项式拟合是用幂函数系,
        而高斯拟合是用高斯函数系。

        使用高斯函数来进行拟合,优点在于计算积分十分简单快捷。这一点
        在很多领域都有应用,特别是计算化学。著名的化学软件Gaussian98
        就是建立在高斯基函数拟合的数学基础上的。

 

技术分享图片技术分享图片

技术分享图片
private float gaussFit(Point[] point)
        {
            int countNum = point.Length;

            double[,] a = new double[countNum, 3];
            double[] b = new double[countNum];// Z1....Zn
            for (int i = 0; i < countNum; i++)
            {
                b[i] = (float)(Math.Log(point[i].Y));
                a[i, 0] = 1;
                a[i, 1] = point[i].X;
                a[i, 2] = a[i, 1] * a[i, 1];
            }
            var matrixA = new DenseMatrix(a);
            var matrixB = new DenseVector(b);
            var matrixC = matrixA.QR().Solve(matrixB);

            float S = (float)(-1 / matrixC[2]);
            float xMax = (float)(matrixC[1] * S / 2.0);  //峰值位置
            //double yMax = Math.Exp(matrixC[0] + xMax * xMax / S);  
            return xMax;
        }
View Code

 












以上是关于高斯拟合代码的主要内容,如果未能解决你的问题,请参考以下文章

将数据拟合到高斯轮廓

高斯曲线拟合

如何使用 LMfit 将曲线拟合到双高斯/偏斜高斯

在表达较少的双峰数据上拟合两个高斯

高斯拟合返回负sigma

在 seaborn displot/histplot 函数中绘制高斯拟合直方图(不是 distplot)