matlab ajusta múltiples puntos 3D discretos a un círculo y encuentra las coordenadas centrales y el radio. Encuentre el código fuente.
Los puntos discretos de entrada están en la variable X
X=[x1 y1 z1;
x2 y2 z2;
......... .]
es una matriz con n filas y 3 columnas. Las coordenadas x, y y z se encuentran en la 1.ª, 2.ª y 3.ª columnas respectivamente.
p0=. mean(X);% usa el centro de gravedad como centro inicial del círculo
r02=mean(sqrt(sum((X-repmat(p0,[size(X,1) 1])) .^2,2)));% utilizado La distancia promedio desde el centro de gravedad se utiliza como radio inicial
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 es la coordenada central del círculo
radii es el radio.