变量X中
X=[x1 y1 z1
x2 y2 z2
...........]
是一个n行,3列的喊橡矩阵,1,2,3列分别为x,y,z坐标
p0=mean(X)%以重心为初始圆心慎饥
r02=mean(sqrt(sum((X-repmat(p0,[size(X,1) 1])).^2,2)))%以到重心的平均距离为初始半径
f=@(p)(X(:,1)-p(1)).^2+(X(:,2)-p(2)).^2+(X(:,3)-p(3)).^2-p(4).^2
p=lsqnonlin(f,[p0 r02])
x0=p(1)y0=p(2)z0=p(3)
radii=abs(p(4))
x0 y0 z0 为圆心坐宽渗返标
radii为半径。
%% x,y为题目中数据plot(x, y, '*')
hold on
A = [x y ones(size(x))]
abc = -(A*A')\sum(A*[x'.^2 y'.^2], 2)
ox = -abc(1)/2
oy = 乱雀-abc(2)/2
R = 扰厅sqrt(ox^2+oy^2-abc(3))
plot(ox, oy, '哗李早or')
t = linspace(0, 2*pi, 100)
plot(ox+R*cos(t), oy+R*sin(t))
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)