Red de conocimiento informático - Aprendizaje de programación - matlab ajusta múltiples puntos 3D discretos a un círculo y encuentra las coordenadas centrales y el radio. Encuentre el código fuente.

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.