MATLAB 最小二乘法拟合圆代码 (3个及以上数据点)
以下是 MATLAB 代码,使用最小二乘法拟合圆:
function [xc,yc,R] = circlefit(x,y)
% Least-squares circle fit
% Input: x,y vectors of point coordinates
% Output: xc, yc, R = center and radius of the fitted circle
n = length(x);
Sx = sum(x);
Sy = sum(y);
Sxx = sum(x.^2);
Syy = sum(y.^2);
Sxy = sum(x.*y);
A = [Sx Sy n; Sxx Syy Sx; Sxy Sxy Sx];
B = [-sum(x.^3+y.^2.*x); -sum(x.^2.*y+y.^3); -sum(x.^2+y.^2)];
sol = A\B;
xc = -sol(1)/2;
yc = -sol(2)/2;
R = sqrt(xc^2+yc^2-sol(3));
end
使用方法:
输入 x 和 y 向量,即可得到拟合圆的圆心坐标和半径。例如:
x = [0 1 2];
y = [0 1 0];
[xc,yc,R] = circlefit(x,y);
输出结果为:
xc = 1
yc = 0.5
R = 0.8660
原文地址: https://www.cveoy.top/t/topic/f1b1 著作权归作者所有。请勿转载和采集!