hi

椭圆的最小二乘拟合

只需要将X换成你的边界坐标即可

x = [59 136

58 137

57 137

56 137

55 138

54 139

53 140

52 141

51 142

51 143

51 144

50 145

50 146

50 147

50 148

49 149

49 150

49 151

49 152

49 153

50 154

50 155

50 156

50 157

51 158

51 159

51 160

52 161

52 162

53 163

54 164

54 165

55 166

56 167

57 168

58 169

59 170

60 171

61 171

62 172

63 172

64 172

65 173

66 173

67 173

68 173

69 173

70 173

71 173

72 173

73 172

74 172

75 172

76 171

77 171

78 170

79 169

79 168

80 167

80 166

80 165

81 164

81 163

81 162

81 161

81 160

81 159

81 158

81 157

81 156

81 155

81 154

81 153

80 152

80 151

80 150

79 149

79 148

79 147

78 146

78 145

77 144

76 143

75 142

74 141

73 140

72 139

71 138

70 138

69 137

68 137

67 137

66 136

65 136

64 136

63 136

62 136

61 136

60 136];

%  p0=[1 1 1 1 1 1];

p0=[0.005 0.005 0.005 0.005 0.005 0.005];

warning off

F=@(p,x)p(1)*x(:,1).^2+p(2)*x(:,1).*x(:,2)+p(3)*x(:,2).^2+p(4)*x(:,1)+p(5)*x(:,2)+p(6);

% 拟合系数,最小二乘方法

p=nlinfit(x,zeros(size(x,1),1),F,p0);

p(1)

p(2)

p(3)

p(4)

p(5)

p(6)

A=p(1)/p(6);

B=p(2)/p(6);

C=p(3)/p(6);

D=p(4)/p(6);

E=p(5)/p(6);

%%椭圆中心

X_center = (B*E-2*C*D)/(4*A*C - B^2);

Y_center = (B*D-2*A*E)/(4*A*C - B^2);

fprintf(' X_center=%g, Y_center=%g\n',X_center,Y_center);

%%长短轴

a= 2*sqrt((2*A*(X_center^2)+2*C*(Y_center^2)+2*B*X_center*Y_center-2)/(A+C+sqrt(((A-C)^2+B^2))));

b= 2*sqrt((2*A*(X_center^2)+2*C*(Y_center^2)+2*B*X_center*Y_center-2)/(A+C-sqrt(((A-C)^2+B^2))));

%%长轴倾角

q=0.5 * atan(B/(A-C));

fprintf(' q=%g\n',q);

fprintf(' a=%g, b=%g\n',a,b);

plot(x(:,1),x(:,2),'ro');

hold on;

xmin=min(x(:,1));

xmax=max(x(:,1));

ymin=min(x(:,2));

ymax=max(x(:,2));

% 作图

ezplot(@(x,y)F(p,[x,y]),[xmin,xmax,ymin,ymax]);

title('曲线拟合');

%legend('样本点','拟合曲线')

用matlab画同心圆,求同心圆的同心度相关推荐

  1. 用matlab画(求)没有原函数的不定积分图像(定积分值)

    用matlab画(求)没有原函数的不定积分图像(定积分值) 问题描述 求定积分值 画原函数图像 具体实例 结论 问题描述 一般情况,用matlab的int函数可以很方便求解一个不定积分或者定积分值,并 ...

  2. 用HTML+CSS画出一个同心圆

    参加web前端校招的同学们经常会遇到这样的面试题:用HTML+CSS画出一个同心圆. 例如: 这道题主要考验的是基础盒模型布局能力和倒圆角属性的巧用. 1.html代码 [html] view pla ...

  3. python绘制彩色同心圆_少儿编程之画十个彩色同心圆

    少儿编程之画十个彩色同心圆 上节课我们学习了,彩色圆环的画法.那这一节课只要对上节课进行适当修改一下,就可以变成了画同心圆的程序了. 一.首先,我们修改一下角色,打开scratch软件后删除默认的角色 ...

  4. python画同心圆程序_python turtle画4个同心圆方法!

    在python中如何使用循环结构画四个相切的圆 from turtle import * r=20 x,y=0,0 for i in range(4): if i==2: penup() goto(x ...

  5. python turtle循环,python实现画循环圆 python turtle画4个同心圆方法

    在python中如何使用循环结构画四个相切的圆 利用循环绘制复杂图形 python题? 循环画圆,圆的圆心在同一个圆上,同时用不同的渐进颜色 要用到三角函数算圆心 python怎么实现画圆功能 pyt ...

  6. matlab求圆台模型,使用Matlab画出圆台圆锥圆柱

    <使用Matlab画出圆台圆锥圆柱>由会员分享,可在线阅读,更多相关<使用Matlab画出圆台圆锥圆柱(5页珍藏版)>请在人人文库网上搜索. 1.用Matlab画圆柱圆台圆锥自 ...

  7. matlab 画狗头彩蛋,我用matlab画制动力分配曲线,求程序代码

    matlab画函数曲线 c = 3.00e8;h = 6.63e-34;k = 1.38e-23;lambda = (1:10:5000).*1e-9; figure(1)subplot(2,1,1) ...

  8. matlab画波动图像,【基于Matlab的波动方程的可视化实现最终版材料】

    基于Matlab的波动方程的可视化实现(最终版) <基于Matlab的波动方程的可视化实现.doc>由会员分享,可免费在线阅读全文,更多与<基于Matlab的波动方程的可视化实现(最 ...

  9. matlab泰勒图,matlab画泰勒图

    急 在matlab中写个用泰勒级数计算arctan(x)的方程 clear;clc;x=1;s=0;y=atan(x);fori=1:1e6n=2*i-1;s=s+(-(-1)^i)*(x^n)/n; ...

最新文章

  1. ResizeObserver - 元素resize监听API
  2. 《PHP求职宝典》--Web设计页面笔记
  3. 哪些钱借了可以不还?
  4. c#异常类的闰年判断
  5. html5中event获取data和class
  6. delphi 获取计算机,Delphi中用GetTickCount获取计算机运行时间
  7. Unity中更改鼠标光标样式
  8. 复合函数求导经典例题_导数--复合函数的导数练习题
  9. 20120902 07
  10. 计算股票收盘价的月日均值 matplotlib绘图
  11. 老公老婆之间的道歉。。。有点幽默有点感动
  12. 自然语言处理之维特比(Viterbi)算法
  13. 微信公众账号怎么快速增加粉丝
  14. 【前端必知】胶水(框架) Stencil.js
  15. 从Windows用scp往linux里传输文件
  16. js字段名下划线命名转驼峰,驼峰转下划线
  17. 利用 Global mapper制作地图瓦片
  18. CAD转换的时候,怎么快速在图纸转换成高质量的JPG格式?
  19. 网络共享计算机权限访问,共享电脑没有访问权限_共享电脑无访问权限
  20. React兼容IE8

热门文章

  1. 云服务器不需要网站吗,网站不用云服务器可以吗
  2. Sourcemod Plugins 开源插件整理
  3. html5-canvas常用的api介绍
  4. Bresenham快速画直线算法
  5. 拯救脂肪肝第一步!以飞桨3D医疗影像分割方案MedicalSeg自主诊断脂肪肝
  6. 再谈10000小时,三板斧破四困境
  7. 如何使用MScomm控件
  8. 编写简单的计算器功能的程序
  9. 计算机e的指数怎么计算方法,e^x的基本算法——剥离大指数法
  10. 循环-05. 兔子繁衍问题