高斯拟合代码

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

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

时间: 2024-08-07 19:33:20

高斯拟合代码的相关文章

高斯拟合c++实现

高斯函数是数学上非常重要的函数,我们熟悉的正态分布的密度函数就是高斯函数,也称高斯分布.而正态分布无疑是概率论与数理统计里最重要的一个分布了. 现在的问题是如果给出一些点集,如何找到一个高斯函数来拟合这些点集呢! 当然,拟合方式还是最小二乘法,拟合函数形式为: y=a*exp(-((x-b)/c)^2); 一共有三个参数,a.b.c.不过这种指数函数拟合比较难实现,所以利用对数变换将其化为二次函数,如下: ln(y)=-(1/c^2)*x^2+(2b/c^2)*x +ln(a)-(b/c)^2;

K-Means(K均值)、GMM(高斯混合模型),通俗易懂,先收藏了!

1. 聚类算法都是无监督学习吗? 什么是聚类算法?聚类是一种机器学习技术,它涉及到数据点的分组.给定一组数据点,我们可以使用聚类算法将每个数据点划分为一个特定的组.理论上,同一组中的数据点应该具有相似的属性和/或特征,而不同组中的数据点应该具有高度不同的属性和/或特征.聚类是一种无监督学习的方法,是许多领域中常用的统计数据分析技术. 常用的算法包括K-MEANS.高斯混合模型(Gaussian Mixed Model,GMM).自组织映射神经网络(Self-Organizing Map,SOM)

R: Kriging interpolation and cross validation 克里金插值及交叉验证浅析

克里金插值的基本介绍可以参考ARCGIS的帮助文档[1]. 其本质就是根据已知点的数值,确定其周围点(预测点)的数值.最直观的方法就是找到已知点和预测点数值之间的关系,从而预测出预测点的数值.比如IDW插值方法,就是假设已知点和预测点的值跟它们相对距离成反比.克里金插值的精妙之处在于它不仅考虑了已知点和预测点的距离关系,还考虑了这些已知点之间的自相关关系. 如何衡量已知点之间的自相关关系呢?通常使用的就是半变异函数,其公式如下[1]: Semivariogram(distance h) = 0.

图像处理与计算机视觉基础,经典以及最近发展

*************************************************************************************************************** 在这里,我特别声明:本文章的源作者是   杨晓冬  (个人邮箱:[email protected]).原文的链接是 http://www.iask.sina.com.cn/u/2252291285/ish.版权归 杨晓冬 朋友所有. 我非常感谢原作者辛勤地编写本文章,并愿意共

图像处理之角点检测与亚像素角点定位

角点是图像中亮度变化最强地方反映了图像的本质特征,提取图像中的角点可以有效提高图像处理速度与精准度.所以对于整张图像来说特别重要,角点检测与提取的越准确图像处理与分析结果就越接近真实.同时角点检测对真实环境下的对象识别.对象匹配都起到决定性作用.Harr角点检测是图像处理中角点提取的经典算法之一,应用范围广发,在经典的SIFT特征提取算法中Harr角点检测起到关键作用.通常对角点检测算法都有如下要求: 1. 基于灰度图像.能够自动调整运行稳定,检测出角点的数目. 2. 对噪声不敏感.有一定的噪声

图像处理与计算机视觉基础,经典以及最近发展--转载

*************************************************************************************************************** 在这里,我特别声明:本文章的源作者是   杨晓冬  (个人邮箱:[email protected]).原文的链接是http://www.iask.sina.com.cn/u/2252291285/ish.版权归 杨晓冬 朋友所有. 我非常感谢原作者辛勤地编写本文章,并愿意共享

Matlab中用fit做曲线拟合

1.确定要拟合的类型 一般情况下matlab会直接提供常用的类型,用fittype创建拟合模型.至于matlab具体提供了哪些模型,参见帮助"List of library models for curve and surface fitting" ft = fittype( 'gauss1' ); %高斯拟合 2.要拟合的数据格式 在最简单的情况下,即拟合两个向量X,Y,则其必须是列向量 3.拟合 使用fit进行拟合 fitresult= fit( xData, yData, ft,

关于鱼眼镜头展图开的一些研究

前言:前段时间在做鱼眼展开的的程序,本来以为超简单,毕竟好多人都已经做过了不是,肯定有许多资料和参考.然而,做什么事情之前都不能眼高手低.我做了好久,还得不出想要的结果,是很烦.前两天导师没办法了给我安排了其他的工作,但我这个还没有得出想要的结果,强迫症的我心里好难受.花两天时间把能想到的全部整理如下,理一理思路,看能不能有所突破. 鱼眼镜头参数是:f=1.5mm,fov=240度 1.常见的三种鱼眼图像 (1)圆形鱼眼图                                    

scikit-learn学习之贝叶斯分类算法

版权声明:<-- 用心写好你的每一篇文章,转载请注明出处@http://blog.csdn.net/gamer_gyt <-- 目录(?)[+] ====================================================================== 本系列博客主要参考 Scikit-Learn 官方网站上的每一个算法进行,并进行部分翻译,如有错误,请大家指正 转载请注明出处,谢谢 ======================================