高斯
擬合(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] ;
for (int i = 0; i < fitdatas.count; i++)
// 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)if(fabs(c)<=dt)
return(0);
if(l!=k)
t=b[k-1];
b[k-1]=b[l-1];
b[l-1]=t;
}c=1/c;
for(j=k+1;j<=n;j++)
b[k-1]*=c;
for(i=k+1;i<=n;i++)
b[i-1]-=b[k-1]*a[i-1][k-1];
}for(i=n;i>=1;i--)
for(j=i+1;j<=n;j++)
b[i-1]-=b[j-1]*a[i-1][j-1];
cout.precision(12);
for(i=0;i>n;
cout<
cin>>m;
while(n<=m)
x=new double[n]; //存放資料點x
y=new double[n]; //存放資料點y
a=new double[m]; //存放擬合多項式的係數
cout
}cout
}zuixiaoerchengnihe(x,y,n,a,m+1);
cout<>ch;
}while(ch=='y'||ch=='y');
高斯曲線擬合原理及實現
高斯擬合 gaussian fitting 即使用形如 gi x ai exp x bi 2 ci 2 的高斯函式對資料點集進行函式逼近的擬合方法。其實可以跟多項式 擬合模擬起來,不同的是多項式擬合是用冪函式系,而高斯擬合是用高斯函式系。使用高斯函式來進行擬合,優點在於計算積分十分簡單快捷。這一點 ...
MATLAB實現高斯曲線擬合
完成某次課程任務,在matlab中新建乙個m檔案,將下列 複製,或者直接複製到命令欄回車即可使用 x 0 0.1 10 0 10每次加0.1,共101個點 y 50 exp x 5 2.2 x,y為初始函式值表現為紅線 x x 因為擬合曲線時需要列向量 y y y0 1 randn 1,101 新增...
手寫高斯牛頓曲線擬合(c
擬合曲線 取100個帶有高斯雜訊的數,利用高斯牛頓法進行擬合求取估計值 a b c 主要步驟 1.構造誤差項 2,求雅克比,以及cost 3,判斷cost是否小於上次cost,小 執行4,大 輸出結果 4,求h g 5求dx 6,更新估計量,到步驟2 高斯牛頓法練習 created by fangu...