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

来源:互联网 发布:淘宝电商哪个机构好 编辑:程序博客网 时间:2024/04/28 13:54

对一系列输入点(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;}


 

原创粉丝点击