最小二乘法拟合直线

最小二乘法拟合直线,第1张

  • 直线方程是y=a*x+b
  • 推导如下图
  • 右边例子是用(1,8)和(5,20)拟合直线
  • C++代码如下
void GetLine(vector<MyPoint> v, float &a, float &b) {
	float xy=0,x=0,y=0,xx=0;
	int n = v.size();
	for(int i = 0; i < v.size(); ++i) {
		xy += v[i].x * v[i].y;
		x += v[i].x;
		y += v[i].y;
		xx += v[i].x * v[i].x;
	}
	a = (n * xy - x * y) / (n * xx - x * x);
	b = (y - a * x) / n;
}
  • 之前推导过 θ \theta θ=a*x+b*y,这里放上结果

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/872826.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存