EDA365电子论坛网

标题: MATLAB源程序代码分享:MATLAB求解拟合圆的圆心和半径 [打印本页]

作者: House    时间: 2020-3-18 09:41
标题: MATLAB源程序代码分享:MATLAB求解拟合圆的圆心和半径

( Z# ~& a, a$ CMATLAB源程序代码分享:MATLAB求解拟合圆的圆心和半径
- I7 u8 M1 `3 B4 d( E5 a* u5 n# W; a( d+ e" r
%% 读入离散点的坐标
- Z& k% W; O$ h( c. u/ Y" gclear;clc;close all 0 w( `& q+ u0 i- V( K( s- ]
data=xlsread('xy.xlsx'); % 读入 excel 文件中的数据
( Y4 @2 q- v; Q8 dx=data(:,1);  % 第一列为 x 坐标
9 j4 j# _- _6 n: ny=data(:,2);  % 第二列为 y 坐标- g( Q2 E9 N: d& d4 {8 ]% \4 u
scatter(x,y)  % 绘制离散点的分布图
( s6 H8 d1 b2 g- w$ haxis equal    % x 轴和 y 轴等比例输出
7 a$ G+ ^- C2 b4 S; Y2 jhold on
- E$ y7 R+ A+ N' F* R# I
* d0 m" @8 M8 }7 q4 z9 k9 h%% 使用线性拟合的方法, 计算拟合圆的圆心坐标和半径
7 w4 Y" n6 E' ?A=[x y ones(length(x),1)];  % 得到矩阵 A! Z/ C& T0 d' m/ u: o" k) _$ O
B=-(x.^2+y.^2);  % 得到矩阵 B
& p) _3 ^& k! U. \abc=A\B;  % 得到 a b c: M3 S. @' y9 s: Z) ?( G
a=abc(1);
, |: x# u5 b5 m! J8 ab=abc(2);* [8 q3 ~0 j/ v
c=abc(3);
, f1 b! d6 ?7 z2 e5 v& a
! [6 {& i$ i# _% V% 根据a b c 求出圆心坐标和半径0 y% p) P0 W) z& ]$ a: R' ^
x0=-0.5*a;# s+ W& `( g9 ]/ Y
y0=-0.5*b;: O( ~7 |+ e) N5 W1 w
r=sqrt(x0^2+y0^2-c);. [+ x4 \" h* v$ }1 I) N* O0 S2 C

5 ~6 ~6 F4 X; y%% 根据计算得到的圆心坐标和半径, 绘制拟合圆- F! |) }% p; R& d* Z: a
k=1;
6 B" g( }( _2 J2 Hfor theta=0:pi/180:2*pi      %角度从 0 到 2*pi
3 a$ S& d. K; m/ y6 b; q    X(k)=r*cos(theta)+x0;    %圆上的横坐标9 k2 j; a9 ]1 i: k1 b3 C
    Y(k)=r*sin(theta)+y0;    %圆上的纵坐标& O# b1 n! Y# B" L
    k=k+1;
, j' j$ s  I/ k6 e% c0 ?end
8 R& z  s  h7 y- D( Kplot(X,Y,'r')        %绘制圆8 |. c" d/ e% k3 J9 I. s  z
scatter(x0,y0,'r*')  %标示圆心
作者: gaoxings    时间: 2020-3-19 18:21
MATLAB求解拟合圆的圆心和半径。




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2