一、说明
输入:二维点集(X1,Y1),...,(Xn,Yn)
输出:圆的方程 中参数A,B,C
解:
二、代码
% 最小二乘法拟合圆 X*X+Y*Y+AX+BY+C=0 v=[A,B,C]'
clear all;
clc;
X = [1.0, -1.0, 0.0, 0.0, 0.5, -0.5];
Y = [0.0, 0.0, 1.0, -1.0, 0.866, -0.866];
N = length(X);
Xsum = sum(X);
Ysum = sum(Y);
XXsum = dot(X, X);
XYsum = dot(X, Y);
YYsum = dot(Y, Y);
XX = X .* X;
YY = Y .* Y;
XXXsum = dot(XX, X);
XXYsum = dot(XX, Y);
YYYsum = dot(YY, Y);
XYYsum = dot(X, YY);
M = [Xsum, Ysum, N; XYsum, YYsum, Ysum; XXsum, XYsum, Xsum];
u = [-XXsum-YYsum, -XXYsum-YYYsum, -XXXsum-XYYsum]';
v = M^(-1) * u;