欢迎来到天天文库
浏览记录
ID:47324801
大小:161.50 KB
页数:5页
时间:2020-01-10
《最小二乘法拟合圆公式推导及matlab实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、2009-01-17
2、 最小二乘法拟合圆公式推导及matlab实现最小二乘法(leastsquaresanalysis)是一种数学优化技术,它通过最小化误差的平方和找到一组数据的最佳函数匹配。最小二乘法是用最简的方法求得一些绝对不可知的真值,而令误差平方之和为最小。最小二乘法通常用于曲线拟合(leastsquaresfitting)。这里有拟合圆曲线的公式推导过程和vc实现。matlab实现:function[R,A,B]=irc(x,y,N)%x,y是平面点的坐标,N是点个数%R是拟合半径,A,B是圆心的平面坐标x1=0;x2=0;x
3、3=0;y1=0;y2=0;y3=0;x1y1=0;x1y2=0;x2y1=0;fori=1:Nx1=x1+x(i);x2=x2+x(i)*x(i);x3=x3+x(i)*x(i)*x(i);y1=y1+y(i);y2=y2+y(i)*y(i);y3=y3+y(i)*y(i)*y(i);x1y1=x1y1+x(i)*y(i);x1y2=x1y2+x(i)*y(i)*y(i);x2y1=x2y1+x(i)*x(i)*y(i);endC=N*x2-x1*x1;D=N*x1y1-x1*y1;E=N*x3+N*x1y2-(x2+y2)*x1;G=
4、N*y2-y1*y1;H=N*x2y1+N*y3-(x2+y2)*y1;a=(H*D-E*G)/(C*G-D*D);b=(H*C-E*D)/(D*D-G*C);c=-(a*x1+b*y1+x2+y2)/N;A=a/(-2);B=b/(-2);R=sqrt(a*a+b*b-4*c)/2;VCvoidCViewActionImageTool::LeastSquaresFitting(){if(m_nNum<3){return;}inti=0;doubleX1=0;doubleY1=0;doubleX2=0;doubleY2=0;doubleX
5、3=0;doubleY3=0;doubleX1Y1=0;doubleX1Y2=0;doubleX2Y1=0;for(i=0;i6、ts[i].y;X1Y1=X1Y1+m_points[i].x*m_points[i].y;X1Y2=X1Y2+m_points[i].x*m_points[i].y*m_points[i].y;X2Y1=X2Y1+m_points[i].x*m_points[i].x*m_points[i].y;}doubleC,D,E,G,H,N;doublea,b,c;N=m_nNum;C=N*X2-X1*X1;D=N*X1Y1-X1*Y1;E=N*X3+N*X1Y2-(X2+Y2)*X1;G=N*Y2-Y1*Y1;H=N*X2Y1+N*Y3-(X7、2+Y2)*Y1;a=(H*D-E*G)/(C*G-D*D);b=(H*C-E*D)/(D*D-G*C);c=-(a*X1+b*Y1+X2+Y2)/N;doubleA,B,R;A=a/(-2);B=b/(-2);R=sqrt(a*a+b*b-4*c)/2;m_fCenterX=A;m_fCenterY=B;m_fRadius=R;return;}
6、ts[i].y;X1Y1=X1Y1+m_points[i].x*m_points[i].y;X1Y2=X1Y2+m_points[i].x*m_points[i].y*m_points[i].y;X2Y1=X2Y1+m_points[i].x*m_points[i].x*m_points[i].y;}doubleC,D,E,G,H,N;doublea,b,c;N=m_nNum;C=N*X2-X1*X1;D=N*X1Y1-X1*Y1;E=N*X3+N*X1Y2-(X2+Y2)*X1;G=N*Y2-Y1*Y1;H=N*X2Y1+N*Y3-(X
7、2+Y2)*Y1;a=(H*D-E*G)/(C*G-D*D);b=(H*C-E*D)/(D*D-G*C);c=-(a*X1+b*Y1+X2+Y2)/N;doubleA,B,R;A=a/(-2);B=b/(-2);R=sqrt(a*a+b*b-4*c)/2;m_fCenterX=A;m_fCenterY=B;m_fRadius=R;return;}
此文档下载收益归作者所有