高斯曲线拟合原理及实现 |
您所在的位置:网站首页 › 高斯数学原理 › 高斯曲线拟合原理及实现 |
高斯拟合(Gaussian Fitting)即使用形如: Gi(x)=Ai*exp((x-Bi)^2/Ci^2) 的高斯函数对数据点集进行函数逼近的拟合方法。 其实可以跟多项式拟合类比起来,不同的是多项式拟合是用幂函数系, 而高斯拟合是用高斯函数系。 使用高斯函数来进行拟合,优点在于计算积分十分简单快捷。这一点 在很多领域都有应用,特别是计算化学。著名的化学软件Gaussian98 就是建立在高斯基函数拟合的数学基础上的。
c#中用mathnet 惊醒矩阵运算 实现方案 double[,] a = new double[fitDatas.Count, 3]; double[] b = new double[fitDatas.Count]; double[] X = new double[3] { 0, 0, 0 }; for (int i = 0; i < fitDatas.Count; i++) { b[i] = Math.Log(fitDatas[i].Intensity); a[i, 0] = 1; a[i, 1] = fitDatas[i].WaveLength; a[i, 2] = a[i, 1] * a[i, 1]; } // Matrix.Equation(datas.Count, 3, a, b, X); MathNet.Numerics.LinearAlgebra.Matrix matrixA = new MathNet.Numerics.LinearAlgebra.Matrix(a); MathNet.Numerics.LinearAlgebra.Matrix matrixB = new MathNet.Numerics.LinearAlgebra.Matrix(b, b.Length); MathNet.Numerics.LinearAlgebra.Matrix matrixC = matrixA.Solve(matrixB); X = matrixC.GetColumnVector(0); double S = -1 / X[2]; double xMax = X[1] * S / 2.0; double yMax = Math.Exp(X[0] + xMax * xMax / S);
运用c++实现方案 #include #include #include #include double f(int n,double x){ //f(n,x)用来返回x的n次方 double y=1.0; if(n==0)return 1.0; else{ for(int i=0;i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |