|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
) A& v% O4 @6 C
MATLAB源程序代码分享:MATLAB求解拟合圆的圆心和半径' z, }1 G; e4 F$ t/ {
0 K5 N: B k8 K5 J( l3 P%% 读入离散点的坐标3 {. ~* z0 ^7 T X7 e: ~ M
clear;clc;close all , P( I& g2 b5 v3 W
data=xlsread('xy.xlsx'); % 读入 excel 文件中的数据2 u- C% s# n$ ?# j. J2 n
x=data(:,1); % 第一列为 x 坐标
/ I4 j0 p; \7 m6 U5 ty=data(:,2); % 第二列为 y 坐标 W( R/ {4 H2 \% f4 G* _& U" O- D- ^& i
scatter(x,y) % 绘制离散点的分布图
; P; y* d$ J5 r3 Maxis equal % x 轴和 y 轴等比例输出4 N v3 L) M- }+ }' S0 C
hold on
/ [7 a' {* B3 R$ D
\% |6 P7 f, R" }1 d$ e# e%% 使用线性拟合的方法, 计算拟合圆的圆心坐标和半径+ q/ w* R) r) o C8 B8 M
A=[x y ones(length(x),1)]; % 得到矩阵 A
5 H" D1 X: h( ]% |0 i1 d p+ cB=-(x.^2+y.^2); % 得到矩阵 B- [6 c8 v9 j4 f% F! t
abc=A\B; % 得到 a b c
, O7 Y- T% p; u+ L0 `a=abc(1);
0 t0 [, u) W( X0 }2 S8 Rb=abc(2);+ I( F& g i5 ]
c=abc(3);9 ]0 V" p7 t8 ~' R+ g! |6 y
. e$ D- G9 @! l1 k% 根据a b c 求出圆心坐标和半径
2 j. C& e4 g8 p) c/ lx0=-0.5*a;% q4 O$ C5 A; `5 r7 B
y0=-0.5*b; L3 @3 v0 A" b, |8 b5 N7 i
r=sqrt(x0^2+y0^2-c);
' O% D" U) ]: x; G G
. ^3 I3 ?" ?$ z0 c9 N. A$ w) c%% 根据计算得到的圆心坐标和半径, 绘制拟合圆
6 W) U$ Q, u/ n) @( p" dk=1;. L t& R: P1 t' \
for theta=0:pi/180:2*pi %角度从 0 到 2*pi
" |9 n% m4 Z& d/ W: L m: V+ H X(k)=r*cos(theta)+x0; %圆上的横坐标
( B3 d# z" Q& `& X5 l" G6 ?( x8 y Y(k)=r*sin(theta)+y0; %圆上的纵坐标7 _( ^8 }, \ Q2 ^1 f* S
k=k+1;7 F% {, u7 p( n. N6 {$ F
end. m) r; s* g$ k# j5 x% [5 I: L
plot(X,Y,'r') %绘制圆
) I& S- R* o z9 d& E# |7 Zscatter(x0,y0,'r*') %标示圆心 |
|