高斯擬合(Gaussian Fitting)即便用形如:
Gi(x)=Ai*exp((x-Bi)^2/Ci^2)
的高斯函數對數據點集進行函數逼近的擬合方法。
其實能夠跟多項式擬合類比起來,不一樣的是多項式擬合是用冪函數系,
而高斯擬合是用高斯函數系。
使用高斯函數來進行擬合,優勢在於計算積分十分簡單快捷。這一點
在不少領域都有應用,特別是計算化學。著名的化學軟件Gaussian98
就是創建在高斯基函數擬合的數學基礎上的。ide
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; }