首页 > 编程知识 正文

线性回归方程的算法,线性拟合法怎么计算

时间:2023-05-04 16:44:40 阅读:143426 作者:3673

在计算机视觉的应用中,提取直线的准确位置这一工作是经常使用的。 此时,使用直线的拟合算法。

在此,还贴上了利用最zzdnm乘法计算最佳拟合直线的代码。

这个代码是我以前学习过《机器视觉算法与应用(双语版)》 [德]wrdy(Stegerc )。 这是哭着的西牛等人在翻译的书时写的。 的公式推导都在书中3.8.1,还算管用。

与一元线性回归算法的区别:一元线性回归算法假设x没有误差,只有y有误差。 该算法假设各点的x-y坐标的误差都服从0平均的正态分布。 因此,在计算机视觉应用中优于常规一元线性回归拟合的结果。

# includeqvector # includeqpoint # include math.h//此代码用于Qt5的qvector和qpoint。 但是,可以很容易地更改为其他数组类型。 /**假设最zzdnm乘法直线拟合(不是一般的一元线性回归算法)将离散点拟合为a x b y c=0型直线)各点的X-y坐标误差均符合0均值的正态分布。 *与线性回归算法的区别:线性回归算法假设x没有误差,只有y有误差。 */boollinefit (constqvectorqpointpoints,double a,double b,double c ) { int size=points.size ); if(size2) a=0; b=0; c=0; 返回假; } double x_mean=0; double y_mean=0; for(intI=0; i size; I ) { x_mean =points[i].x ); y_mean =points[i].y (; } x_mean /=size; y_mean /=size; //至此,计算出了x y的平均值double Dxx=0、Dxy=0、Dyy=0; for(intI=0; i size; I ) dxx=(* (points[i].x(- x_mean ) ) points[I].x )-x_mean; dxy=(points[I].x(-x_mean ) ) * (points[i].y )- y_mean ); dyy=(* (points[i].y(- y_mean ) ) points[I].y )-y_mean; }doublelambda=(dxxdyy )-sqrt ) * (Dxx - Dyy ) )4 * Dxy * Dxy ) )/2.0; doubleden=sqrt(dxy*dxy ) * (lambda - Dxx ) ) * (lambda - Dxx ); a=Dxy/den; b=(lambda-dxx )/den; c=- a * x_mean - b * y_mean; 返回真; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。