# least square circle, why doesn't it work?

4 views (last 30 days)
Jenny Andersen on 10 Dec 2019
Edited: Matt J on 10 Dec 2019
Hi, so I have four data points (x and y) and I want to find A and B from least square equation Ax=B (to fit the circle's equation). I also want to solve x. I have tried the following but x the circle is not visiable. What am I doing wrong?
x = [6; 5; -1; 1];
y = [4; 6; 5; -1];
plot(x,y,'*')
% circle's equation x^2+y^2 = 2xc1+2yc2+c3
A = [2.*x,2.*y,ones(n,3)]
B = [x^2 + y^2];
c = A\B;
plot(A,B)

Jenny Andersen on 10 Dec 2019
Thanks, silly mistake. However, it does not still seem to be working.
Ridwan Alam on 10 Dec 2019
what is 'a' and 'b'?
Jenny Andersen on 10 Dec 2019
I meant to write A and B. It's been changed in the script above now.

Matt J on 10 Dec 2019
Edited: Matt J on 10 Dec 2019
As I mentioned in your other post, your approach is not a good way to fit a circle. However, assuming you must do it this way, your main mistake was in the plotting, not in the fitting.
x = [6; 5; -1; 1];
y = [4; 6; 5; -1];
n=numel(x);
% circle's equation x^2+y^2 = 2xc1+2yc2+c3
A = [2.*x,2.*y,ones(n,1)];
B = [x.^2 + y.^2];
c = A\B;
fun=@(x,y) x.^2 + y.^2-c(1)*2*x-c(2)*2*y-c(3);
plot(x,y,'*')
hold on
fimplicit(fun,[-3,8])
hold off
axis equal

#### 1 Comment

Jenny Andersen on 10 Dec 2019
Thanks alot!