您的位置:首页 > 其它

利用最小二乘法进行线性拟合

2013-01-13 23:00 369 查看
对一系列输入点(x,y)进行线性拟合出的直线方程为: y = Ax + B,根据最小二乘法求出A,B的公式为:



代码实现:

// ******************************************************
// * Line fitting with least square error method
// * Input:
// *    x, input x values
// *    y, input y values
// *    size, size of x and y
// *    A, coefficient in y = Ax + B
// *    B, coefficient in y = Ax + B
// *
// * By Li Chengyu, 2013-01-13
// ******************************************************
void LineFitting(float x[], float y[], int size, float& A, float& B)
{
float xmean = 0.0f;
float ymean = 0.0f;
for(int i = 0; i < size; i++)
{
xmean += x[i];
ymean += y[i];
}
xmean /= size;
ymean /= size;

float sumx2 = 0.0f;
float sumxy = 0.0f;
for(int i = 0; i < size; i++)
{
sumx2 += (x[i] - xmean) * (x[i] - xmean);
sumxy += (y[i] - ymean) * (x[i] - xmean);
}

A = sumxy / sumx2;
B = ymean - A*xmean;

}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: