找回密码
 注册
关于网站域名变更的通知
查看: 514|回复: 1
打印 上一主题 下一主题

MATLAB源程序代码分享:MATLAB求解拟合圆的圆心和半径

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-3-18 09:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

8 a  J( W/ Z0 R8 q! X+ Y  B6 TMATLAB源程序代码分享:MATLAB求解拟合圆的圆心和半径
0 N7 U3 ?- a3 i
8 i. e1 H% k, z! l/ T! i4 W' Z* n8 \%% 读入离散点的坐标
  i( j. P2 d; Wclear;clc;close all
0 i+ L; T6 h0 d" [. ddata=xlsread('xy.xlsx'); % 读入 excel 文件中的数据; j* _6 r+ R! Q' N' O
x=data(:,1);  % 第一列为 x 坐标
4 C3 p* Z/ e: p1 Gy=data(:,2);  % 第二列为 y 坐标8 `+ ~2 l( X5 \0 Q
scatter(x,y)  % 绘制离散点的分布图
- L  f1 U- A0 O/ y/ M/ Z! kaxis equal    % x 轴和 y 轴等比例输出' m4 m: t! c+ O+ e7 V1 V& i8 ]
hold on
) x( w* O6 P+ z1 T7 d
4 Y. F# z+ ~/ _, Q5 F  H% ~2 u%% 使用线性拟合的方法, 计算拟合圆的圆心坐标和半径
& p5 D0 q+ M( _7 u7 E( v, FA=[x y ones(length(x),1)];  % 得到矩阵 A9 ^4 E+ K, Q2 D: J* _1 f
B=-(x.^2+y.^2);  % 得到矩阵 B  p$ [. g  Z/ V! l3 V# y0 T) r
abc=A\B;  % 得到 a b c
" l  w8 k4 f3 w+ ya=abc(1);
1 m$ Y8 r" \3 o! F7 t8 ]b=abc(2);
7 p# W+ R4 n4 {. X1 u7 wc=abc(3);
3 H' L' o6 E) _0 b* X1 e. g
7 d" z% G. a# d/ E) y% 根据a b c 求出圆心坐标和半径
( k, m- n; m7 Yx0=-0.5*a;
3 F& N9 m$ y- I. I6 A! x( a0 U. G3 Cy0=-0.5*b;
( G& ~* Z6 _  w1 @2 T% dr=sqrt(x0^2+y0^2-c);
# `6 g# N# Z1 v; q9 ~6 [: p
, l  l/ Y, b' z$ j2 \%% 根据计算得到的圆心坐标和半径, 绘制拟合圆
( S; h9 U6 U1 j+ [8 Rk=1;% Q3 p. R( k2 @) k+ P
for theta=0:pi/180:2*pi      %角度从 0 到 2*pi
  V* Z. b" ?0 k8 Y- k; I! f    X(k)=r*cos(theta)+x0;    %圆上的横坐标
0 M) S1 z5 G$ N/ ?    Y(k)=r*sin(theta)+y0;    %圆上的纵坐标
4 b, u* b- d/ p3 x9 O: g* [. a    k=k+1;8 d/ H/ b3 @5 G, t% |) ~" O
end
& j  G' h; G4 w8 `) \/ b! Qplot(X,Y,'r')        %绘制圆7 f+ t: [6 A0 M) Q/ L
scatter(x0,y0,'r*')  %标示圆心

该用户从未签到

2#
发表于 2020-3-19 18:21 | 只看该作者
MATLAB求解拟合圆的圆心和半径。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 09:45 , Processed in 0.156250 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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