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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

4 H0 @7 P7 N1 @: i  L& Z/ _MATLAB源程序代码分享:MATLAB求解拟合圆的圆心和半径
# R; B+ y5 l: `% H; O# A7 {$ R; Q6 a8 B0 Q# S$ H/ R8 G
%% 读入离散点的坐标
, h+ ?8 s/ C* Dclear;clc;close all 8 k# }% D1 @4 \) {' o, s
data=xlsread('xy.xlsx'); % 读入 excel 文件中的数据
7 a" L* U+ k! |. Dx=data(:,1);  % 第一列为 x 坐标
1 A9 |5 f9 c% {" W; }y=data(:,2);  % 第二列为 y 坐标; w3 n: T  r. k! q( B5 X
scatter(x,y)  % 绘制离散点的分布图
' t/ \# T9 o/ \/ C: U7 `axis equal    % x 轴和 y 轴等比例输出
( `8 f2 b) H! U' ]' ~8 _6 ihold on
- ~5 A8 w  d4 k' N. @9 D- p8 q8 F
4 L9 F$ @% U& H) s' [- ~# P( w%% 使用线性拟合的方法, 计算拟合圆的圆心坐标和半径" I& f: w! q3 l7 Q' t1 r: q6 g
A=[x y ones(length(x),1)];  % 得到矩阵 A& A( Q/ w0 k* \) v5 a6 B/ q
B=-(x.^2+y.^2);  % 得到矩阵 B% c  H$ |: e, X
abc=A\B;  % 得到 a b c
  r1 R2 A, w& ^, o% I4 ca=abc(1);
6 w) Y# l, [: K4 P5 U+ }: x$ Pb=abc(2);6 G! m* X4 Z8 v; j
c=abc(3);- ?( c3 r6 L' H0 s7 j& h

! _0 _) W1 x3 J) Q2 [1 |% 根据a b c 求出圆心坐标和半径: u0 y, w$ D5 x$ o$ s2 c
x0=-0.5*a;
' v. V# O) Q* a" q; {# Ty0=-0.5*b;/ W4 V% p# o4 ]  \9 i
r=sqrt(x0^2+y0^2-c);" M- u) ?+ C1 o9 w5 e1 m' j6 S
, N, _" }; d, s( F$ D* w: ?% F' z
%% 根据计算得到的圆心坐标和半径, 绘制拟合圆
8 b; A1 P$ L! M" sk=1;
& X! \4 ^* P  Ofor theta=0:pi/180:2*pi      %角度从 0 到 2*pi
/ z' z) r# ]5 j    X(k)=r*cos(theta)+x0;    %圆上的横坐标' @7 X' [, {) X% t5 i
    Y(k)=r*sin(theta)+y0;    %圆上的纵坐标
3 p1 W4 L# h/ `: t" c    k=k+1;  V7 ~% R; f& k$ V
end
, W4 |. p7 ^; \( e3 z  w2 @" x0 [9 I0 @plot(X,Y,'r')        %绘制圆
8 E) ?# ?0 R$ q8 ?scatter(x0,y0,'r*')  %标示圆心

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-2 06:02 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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