// *input: 存储数据的数组
// size: 数组中实际保存了多少数据
int LSQ_adjust(double *input, long size) {
double a11(0.0), a12(0.0), a21(0.0), a22(0.0), b1(0.0), b2(0.0);
double a(0.0), b(0.0);
long i(0);
for (i = 0; i < size; i++)
{
a11 = a11 + i * i;
a12 = a12 + i;
a21 = a21 + i;
a22 = size;
b1 = b1 + i * input[i];
b2 = b2 + input[i];
}
//计算直线系数
b = (b1 / a11 - b2 / a21) / (a12 / a11 - a22 / a21);
a = b1 / a11 - a12 / a11 * b;
for (i = 0; i < size; i++)
{
input[i] = input[i] - (a * i + b);
}
return 0;
}
【C++】代码实现:最小二乘法
猜你喜欢
转载自blog.csdn.net/kingkee/article/details/94391656
今日推荐
周排行