MATLAB Answers

least square circle, why doesn't it work?

4 views (last 30 days)
Jenny Andersen
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)

  3 Comments

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

Sign in to comment.

Accepted Answer

Matt J
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

Sign in to comment.

More Answers (0)

Sign in to answer this question.