当前位置:文档之家› 最小二乘法圆拟合及matlab程序

最小二乘法圆拟合及matlab程序


Q(a,b, c)
a
2( X i2 Yi2 aX i bYi c) X i 0

Q(a,b, c)
b
2( X i2 Yi2 aX i bYi c)Yi 0 ②
Q(a,b, c)
c
2( X i2 Yi2 aX i bYi c) 0 ③
最小二乘法圆拟合
1
最小二乘法拟合圆曲线: R2 (x A)2 ( y B)2
R2 x2 2Ax A2 y2 2By B2
令a=-2A,b=-2B, c A2 B2 R2
则:圆的另一形式为:
x2 y2 ax by c 0
2
A a 只需求出参数a,b,c即可以求的圆半径参数: 2
A a 2
B b 2
R 1 a2 b2 4c 2
9
t=0:0.01:pi; a=20;%设定圆心X轴数值 b=30;%设定圆心Y轴数值 r=5;%设定圆半径数值 x=a+r*cos(t)+randn(1,315); y=b+r*sin(t)+randn(1,315); plot(x,y); hold on; x=x(:); y=y(:); m=[x y ones(size(x))]\[-(x.^2+y.^2)]; xc = -.5*m(1)%拟合圆心X轴数值 yc = -.5*m(2)%拟合圆心Y轴数值 R = sqrt((m(1)^2+m(2)^2)/4-m(3))%拟合半径数值 plot(xc,yc,'r-x',(xc+R*cos(t)),(yc+R*sin(t)),'r-'); axis equal;
B a 2
R 1 a2 b2 4c 2
3
( Xi ,Yi ),i (1, 2,3 N )中到圆心的距离为di :
d 2 ( X i A)2 (Yi B)2
样本集
( X i ,Yi )

到圆边缘的距离的平方与和半径平方的差为:
i di2 R2 ( X i A)2 (Yi B)2 R2
6
由 ① × N- ③ × Xi
② × N- ③ × Yi
且令 C (N Xi2 Xi Xi )
D (N XiYi Xi Yi )
Ei2
( X i2 Yi2 )
Xi
G (N Yi2 Yi Yi )
X i2 Yi2 +aX i bYi c
4
令Q(a,b,c)为
的平方和:
i
Q(a, b, c) i2 [( Xi2 Yi2 aXi bYi c)]2
下面求参数a,b,c使得Q(a,b,c)的值最小即可
5
F(a,b,c)对a,b,c求偏导,令偏导等于0,得到极值点,比较所有极值点的函 数值即可得到最小值。
10
H N Yi3 N Xi2Yi ( X i2 Yi2 ) Yi
7
解得: Ca+Db+E=0
Da+Gb+H=0
a

HD EG CG D2
b

HC ED D2 GC
c ( Xi2 Yi2 ) a Xi b Yi
N
8
得A、B、R的估计拟合值:
相关主题