作业帮 > 综合 > 作业

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

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/24 22:58:49
matlab 多个离散三维点 拟合圆 求圆心坐标及半径 求源代码
大一无力啊!
输入的离散点在
变量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为半径.