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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
3 z, [9 n5 N. m  u+ O4 g5 R
MATLAB源程序代码分享:MATLAB求解拟合圆的圆心和半径
$ \& W+ ^3 ?, P6 [  m0 s  N1 T; A" e7 R+ W' K/ a  ^6 x9 @
%% 读入离散点的坐标! ~* v5 a# g- o( F4 k; h1 L
clear;clc;close all 7 f' f* K; a0 P1 k( g( |( M: @
data=xlsread('xy.xlsx'); % 读入 excel 文件中的数据' E: X6 b# {  L' J: k3 R
x=data(:,1);  % 第一列为 x 坐标" K+ Q6 U. l0 C
y=data(:,2);  % 第二列为 y 坐标
/ ?$ c7 T; |, Vscatter(x,y)  % 绘制离散点的分布图& Y( W2 V( B6 i
axis equal    % x 轴和 y 轴等比例输出& G0 K, c7 h0 Y7 ?) [/ `: o1 w
hold on' I; p; x" J; i' R( ?2 e7 s; ?

4 M$ m0 {" i5 o: m! z" @1 U" H%% 使用线性拟合的方法, 计算拟合圆的圆心坐标和半径; _3 c8 o0 M9 c6 ~
A=[x y ones(length(x),1)];  % 得到矩阵 A
2 i) x( g) H/ G. R2 a0 V! G. y$ cB=-(x.^2+y.^2);  % 得到矩阵 B
6 }% O1 e  a7 ^0 U0 B8 d& W) ~" `& {abc=A\B;  % 得到 a b c& c: c: w0 s; u
a=abc(1);
8 O8 A5 X3 T+ K/ B/ f8 qb=abc(2);
: ?* s, ~- w* n) \# b6 bc=abc(3);
! O- m* ]) e) @. [7 n; [1 w2 z# p6 @9 D: D. q6 V+ g4 V9 F% n0 H
% 根据a b c 求出圆心坐标和半径
1 e' S. }% X) r1 z  ox0=-0.5*a;
! d. ^/ S9 z& W; j+ Fy0=-0.5*b;
4 W4 p( s: s0 g& ?r=sqrt(x0^2+y0^2-c);1 P" g/ S- \- E; r! X/ }2 h( ?5 O2 P
4 B8 [% j1 C! {/ L# i
%% 根据计算得到的圆心坐标和半径, 绘制拟合圆
+ I  y' y/ I* V4 ]  O4 F+ Pk=1;3 ^! b9 U/ k+ z! z" L
for theta=0:pi/180:2*pi      %角度从 0 到 2*pi- ?1 z6 X2 m, F4 t! q0 }! u
    X(k)=r*cos(theta)+x0;    %圆上的横坐标
2 O7 m, _/ F  o+ W1 v  b* T6 N    Y(k)=r*sin(theta)+y0;    %圆上的纵坐标
8 A$ s: J* {3 t0 U2 s8 i2 u2 k. N    k=k+1;
- u8 {* j* E  w8 s/ S: uend
9 p, |' g8 E. N7 r4 ^* Kplot(X,Y,'r')        %绘制圆
. R6 K8 N2 E  Y" Bscatter(x0,y0,'r*')  %标示圆心

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 21:21 , Processed in 0.171875 second(s), 24 queries , Gzip On.

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

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

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