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