matlab 多个离散三维点 拟合圆 求圆心坐标及半径 求源代码

matlab 多个离散三维点 拟合圆 求圆心坐标及半径 求源代码,第1张

输入的离散点在

变量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))


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

原文地址: https://outofmemory.cn/yw/12541532.html

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

发表评论

登录后才能评论

评论列表(0条)

保存