拟合椭圆首先要知道各个点的坐标,然和带入如下公式:

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:椭圆方程的导数边值问题

    tic; clear clc N=; M=*N; h1=/M; h2=/N; x=:h1:; y=:h2:; fun=inline('exp(x)*sin(pi*y)','x','y'); f=inl ...

  2. matlab最小二乘法数据拟合函数详解

    定义: 最小二乘法(又称最小平方法)是一种数学优化技术.它通过最小化误差的平方和寻找数据的最佳函数匹配.利用最小二乘法可 以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小. ...

  3. 使用matlab进行空间拟合

    假设有这么一组数据, x=[4 5 6 7 8 4 8 10]'; y=[56 56 56 56 56 60 60 60]';z=[6 6 6 9 6 19 6 6]'; 要求出其平面方程z=C+Ax ...

  4. MATLAB学习笔记(七)——MATLAB解方程与函数极值

    (一)线性方程组求解 包含n个未知数,由n个方程构成的线性方程组为: 其矩阵表示形式为: 其中 一.直接求解法 1.左除法 x=A\b; 如果A是奇异的,或者接近奇异的.MATLAB会发出警告信息的. ...

  5. MATLAB 排序、拟合

    一.数据排序整合 1.随机生成的数,从小到大排序 clear rand('seed',1)%设置随机种子,确保随机数一样 edge_range=unifrnd (1, 10, 1, 10) edge_ ...

  6. matlab——插值与拟合

    @ 目录 前言 一.拟合 1.定义 2.三种判别准则 3.最小二乘法 (1)一般形式 (2)常用函数 (3)matlab实现 二.插值 1.定义 2.方法 (1)分段线性插值 (2)拉格朗日插值多项式 ...

  7. MATLAB求解方程与方程组

    1.      solve函数 ①求解单个一元方程的数值解 syms x; x0 = double(solve(x +2 - exp(x),x)); 求x+2 = exp(x)的解,结果用double ...

  8. RANSAC介绍(Matlab版直线拟合+平面拟合)

    https://blog.csdn.net/u010128736/article/details/53422070

  9. matlab解方程

    [x1,y1,x2,y2]=solve('x1^2 + y1^2=1','x2^2-8*x2 +y2^2 +15=0','x1*x2 + y1 * y2=1','x1 + x2 =a','x1','y ...

随机推荐

  1. HDU2829

    题目大意:给定一个长度为n的序列,至多将序列分成m+1段,每段序列都有权值,权值为序列内两个数两两相乘之和.m<=n<=1000. 分析:令w[i,j]表示区间[i,j]中两两乘积之和,f ...

  2. "aa".equals(name)这种写法为什么就可以避免空指针

    public static void main(String[] args) { String name=null; if("aa".equals(name))//这种情形,不出现 ...

  3. jquery ajax 总是还未等到success回调就刷掉了,就进入了onError函数的错误案例分析

    jquery ajax 总是还未等到success回调就刷掉了,就进入了onError函数的错误案例分析: 同样的请求同时请求了2次,然后第二次的请求把第一次的给刷掉了! (比如:<div on ...

  4. MyEclipse9中的不伤眼修改、FreeMarker插件、JQuery提示插件、全屏(FullScreen)插件的安装

    ============下载相关附件===================== http://files.cnblogs.com/fhtwins/eclipse-fullscreen_1.0.7.zi ...

  5. Hibernate第一个程序

    1. 下载资源:www.hibernate.org 2. 资源介绍hibernate-release-4.3.10.Final a) Documentation  相关文档 b) Lib 相关jar包 ...

  6. C++命名空间 namespace的作用和使用解析

    一. 为什么需要命名空间(问题提出) 命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中 常见的同名冲突. 在 C语言中定义了3个层次的作用域,即文件(编译单元).函数和复合语句.C ...

  7. HDU5221 Occupation 树链剖分

    题意: 给出一棵树,root=1,树有点权,有一个人叫做M 有3种操作: 1 u v 把u到v路径上的所有点的点权都给M 2 u 若u的点权在M手上,拿走 3 u 把u为根的子树的所有点权都给M 每一 ...

  8. CF 500D New Year Santa Network tree 期望 好题

    New Year is coming in Tree World! In this world, as the name implies, there are n cities connected b ...

  9. python(12)给文件读写上锁

    目的:当我们用脚本去爬取数据或者向文件中写数据的时候,有时候需要两个或者多个脚本同时向一个文件中读写 于是乎就会出现写乱的情况,于是乎我们就需要把正在写的文件先锁起来,只让当前的写,写完后再释放 代码 ...

  10. javascript中标签与break和continue的配合使用

    var num = 0; outermost: for (var i=0; i<10; i++) { for (var j=0; j<10; j++) { if (j==5 || i==5 ...