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为半径。
温馨提示:答案为网友推荐,仅供参考
相似回答