查看: 866|回复: 4|关注: 0

[已解决] matlab用三点拟合圆并得出方程

[复制链接]

新手

12 麦片

财富积分


050


3

主题

4

帖子

0

最佳答案
求用matlab三点拟合圆并得出方程的代码。
回复主题 已获打赏: 0 积分

举报

论坛优秀回答者

中级

650 麦片

财富积分


5001500


22

主题

957

帖子

110

最佳答案
  • 关注者: 9
发表于 2020-4-23 15:17:40 | 显示全部楼层 |此回复为最佳答案
>> x = rand(3,1);
>> y = rand(3,1);
>> n=length(x); xx=x.*x; yy=y.*y; xy=x.*y;
A=[sum(x) sum(y) n;sum(xy) sum(yy)...
sum(y);sum(xx) sum(xy) sum(x)];
B=[-sum(xx+yy) ; -sum(xx.*y+yy.*y) ; -sum(xx.*x+xy.*y)];
a=A\B;            %x = A\B 用来求解线性方程 A*x = B.  A 和 B 的行数一致.
xc = -.5*a(1);
yc = -.5*a(2);
R = sqrt((a(1)^2+a(2)^2)/4-a(3));
theta=0:0.1:2*pi;  
    Circle1=xc+R*cos(theta);  
    Circle2=yc+R*sin(theta);   
    plot(Circle1,Circle2,'g','linewidth',1);  
    axis equal  
回复此楼 已获打赏: 0 积分

举报

新手

12 麦片

财富积分


050


3

主题

4

帖子

0

最佳答案
 楼主| 发表于 2020-4-23 16:05:09 | 显示全部楼层
onlye_caisA 发表于 2020-4-23 15:17
>> x = rand(3,1);
>> y = rand(3,1);
>> n=length(x); xx=x.*x; yy=y.*y; xy=x.*y;

是已知三个点去拟合圆,是不是应该有[x(1),y(1)]   [x(2),y(2)]   [x(3),y(3)]之类的
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

中级

650 麦片

财富积分


5001500


22

主题

957

帖子

110

最佳答案
  • 关注者: 9
发表于 2020-4-23 16:54:00 | 显示全部楼层
可爱京 发表于 2020-4-23 16:05
是已知三个点去拟合圆,是不是应该有[x(1),y(1)]   [x(2),y(2)]   [x(3),y(3)]之类的 ...

我都随机给你几个点都可以,已知点更可以了。

x  =[x1,x2,x3];同理,y
回复此楼 已获打赏: 0 积分

举报

新手

5 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
发表于 2020-9-1 18:24:21 | 显示全部楼层
onlye_caisA 发表于 2020-4-23 15:17
>> x = rand(3,1);
>> y = rand(3,1);
>> n=length(x); xx=x.*x; yy=y.*y; xy=x.*y;

大佬,您的这个程序是什么原理得到的?用到了哪些数学知识点?
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /5 下一条

快速回复 返回顶部 返回列表