MATLAB三点确定一个圆

1 给定三个不在同一直线上的三个点的坐标,确定圆的轨迹方程

2

3

4

下面是MATLAB中的函数文件

5 function[a,b,c]=ThreePointFitCircle(x,y,flag)

6 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

7 %Author By:Wacs5

8 %Date:20090813

9 %Email:[email protected]

10 %Function:三点确定一个圆

11 %Argument:x,y为三个点的横纵坐标(行向量或列向量)

12 %flag为是否画图表示

13 %返回的是:a,b为圆心。c为半径

14 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

15 if(nargin

16 flag=0;

17 end

18

19 A=[x(1)-x(2),y(1)-y(2);x(3)-x(2),y(3)-y(2)];

20 B=[x(1)^2-x(2)^2+y(1)^2-y(2)^2;x(3)^2-x(2)^2+y(3)^2-y(2)^2];

21

22 ifdet(A)

23 error('三点趋于共线');

24 end

25

26 ab=A\B;

27 a=ab(1)/2;

28 b=ab(2)/2;

29

30 c2=(x(1)-a)^2+(y(1)-b)^2;

31 c=sqrt(c2);

32

33 %%以下是作图验证

34 if(flag)

35 seta=0:0.01:2*pi;

36 xx=a+c*cos(seta);%圆上的点的横坐标

37 yy=b+c*sin(seta);%圆上的点的纵坐标

38 plot(xx,yy,x,y,'*',a,b,'.')

39 title('三点拟合一个圆')

40 xlabel('x')

41 ylabel('y')

42 axisequal

43 end

44 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

45 %%m文件到此结束

46

47

48 例:

49 x=[1,3,2];

50 y=[1,5,2];

51 [a,b,c]=ThreePointFitCircle(x,y,1);%1为作图

52 disp(['圆的方程为:(x',sprintf('%+f',a),')^2+(y',sprintf('%+f',b),')^2=',...53 sprintf('%f',c),'^2'])

1 给定三个不在同一直线上的三个点的坐标,确定圆的轨迹方程

2

3

4

下面是MATLAB中的函数文件

5 function[a,b,c]=ThreePointFitCircle(x,y,flag)

6 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

7 %Author By:Wacs5

8 %Date:20090813

9 %Email:[email protected]

10 %Function:三点确定一个圆

11 %Argument:x,y为三个点的横纵坐标(行向量或列向量)

12 %flag为是否画图表示

13 %返回的是:a,b为圆心。c为半径

14 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

15 if(nargin

16 flag=0;

17 end

18

19 A=[x(1)-x(2),y(1)-y(2);x(3)-x(2),y(3)-y(2)];

20 B=[x(1)^2-x(2)^2+y(1)^2-y(2)^2;x(3)^2-x(2)^2+y(3)^2-y(2)^2];

21

22 ifdet(A)

23 error('三点趋于共线');

24 end

25

26 ab=A\B;

27 a=ab(1)/2;

28 b=ab(2)/2;

29

30 c2=(x(1)-a)^2+(y(1)-b)^2;

31 c=sqrt(c2);

32

33 %%以下是作图验证

34 if(flag)

35 seta=0:0.01:2*pi;

36 xx=a+c*cos(seta);%圆上的点的横坐标

37 yy=b+c*sin(seta);%圆上的点的纵坐标

38 plot(xx,yy,x,y,'*',a,b,'.')

39 title('三点拟合一个圆')

40 xlabel('x')

41 ylabel('y')

42 axisequal

43 end

44 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

45 %%m文件到此结束

46

47

48 例:

49 x=[1,3,2];

50 y=[1,5,2];

51 [a,b,c]=ThreePointFitCircle(x,y,1);%1为作图

52 disp(['圆的方程为:(x',sprintf('%+f',a),')^2+(y',sprintf('%+f',b),')^2=',...53 sprintf('%f',c),'^2'])


相关内容

  • Matlab平台上函数单调性与凹凸性判定的数学实验_崔秋珍
  • Matlab 平台上函数单调性与凹凸性判定的数学实验 崔秋珍,李龙星 (洛阳工业高等专科学校 471003计算机系,河南洛阳) 摘 要: Matlab 软件平台是功能强大的计算机数学实验系统,大量的数学计算可以在Matlab 上实现.系统介绍在Matlab 软件平台上实现函数单调性与凹凸性判定可视化 ...

  • MATLAB在信号频谱分析中的应用
  • 摘要:利用matlab 对信号频谱进行分析,通过两种方法将频谱横轴的快速傅里叶变换点数转换成频率.以常见信号频谱分析为例,将结果以图形化的方式显示出来.通过matlab 仿真,使以往抽象的内容具体化. 关键词:频谱分析:matlab :快速傅里叶变换:仿真 中图分类号:tn911.6 文献标识码:a ...

  • 高阶多智能体一致性研究问题
  • 摘 要 高阶多智能体一致性调整属于系统设计环节,通过一致性调整可以使系统的性能得到改善,从而使系统满足期望的性能指标. 本文主要研究线性定常系统的运动控制一致性调整方法,包括运动控制超前一致性调整.运动控制滞后一致性调整和运动控制滞后超前一致性调整.本文首先回顾了系统的时域性能指标和频域性能指标以及 ...

  • 电力电子技术课程设计题目
  • 设计任务书1 舞台灯光控制电路的设计与分析√ 一. 设计任务 设计一个舞台灯光控制系统,通过给定电位器可以实现灯光亮度的连续可调.灯泡为白炽灯,可视为纯电阻性负载,灯光亮度与灯泡两端电压(交流有效值或直流平均值)的平方成正比. 二. 设计条件与指标 1. 单相交流电源,额定电压220V: 2. 灯泡 ...

  • matlab 模型参数确定
  • 利用Matlab 软件确定模型中的参数问题 数学与信息科学学院 孔祥庆 一.实验名称:利用Matlab 软件确定模型中的参数问题二.实验目的: 掌握利用数学软件确定数学模型中的参数方法三.实验内容 1.熟悉Matlab 软件中数据拟合命令 2.进一步熟悉用初等数学建模的一些方法3.掌握数学模型中参数 ...

  • 参数变化时系统的稳定性分析
  • 课程设计任务书 学生姓名: 吴昱浩 专业班级: 自动化0805班 指导教师: 陈跃鹏 工作单位: 自动化学院 题 目: 参数变化时系统的稳定性分析 初始条件: 反馈系统方框图如下图所示.D 1(s)=K ,D 2(s)=K + G 2(s)= 1 (s +1)(s +2) K I s +1 G 1( ...

  • 控制系统串联校正课程设计
  • 河南科技大学 课 程 设 计 说 明 书 课程名称 控制理论课程设计 题 目 控制系统串联校正设计 学 院 班 级 学生姓名 指导教师 日 期 控制理论课程设计任务书 设计题目: 控制系统串联校正设计 一.设计目的 控制理论课程设计是综合性较强的教学环节.其目的是培养学生对所学自控理论知识进行综合应 ...

  • [偏微分方程概述及运用matlab求解偏微分方程常见问题]
  • 北京航空航天大学 偏微分方程概述及运用matlab求解微分方 程求解常见问题 姓名 学号 班级 2011年6月 偏微分方程概述及运用matlab求解偏微分 方程常见问题 徐敏 摘要 偏微分方程简介,matlab偏微分方程工具箱应用简介,用这个工具箱解方程的过程是:确定待解的偏微分方程:确定边界条件: ...

  • Matlab在大学物理电磁学中的应用
  • 2005年6月 第4卷 第2期渝西学院学报(自然科学版) Journal of Wes tern Chongqing Universit y (Nature Sciences Edition ) J un . , 2005 Vol . 4 No . 2 Matlab 在大学物理电磁学中的应用 刘群英 ...

  • 数据误差处理
  • 一 前言 随着国民经济的迅速发展,大量的数据需要处理,误差理论和数据处理的任务也越来越重,传统的手算以及传统的计算器等工具已不能满足需要.另一方面,计算机在我们的日常生活中却日益普及,显然,运用计算机进行数据处理已是大势所趋. MATLAB是美国MathWorks公司推出的一种简洁方便的工程计算语言 ...