码迷,mamicode.com
首页 > 其他好文 > 详细

高斯拟合代码

时间:2018-05-08 11:13:15      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:closed   view   eve   bsp   matrix   领域   就是   center   lin   

高斯拟合(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

 

高斯拟合代码

标签:closed   view   eve   bsp   matrix   领域   就是   center   lin   

原文地址:https://www.cnblogs.com/zhayunjia/p/9006900.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!