当前位置:首页 >> 机械/仪表 >>

最小二乘法拟合椭圆附带matlab程序


最小二乘法拟合椭圆
设平面任意位置椭圆方程为: x 2 + Axy + By 2 + Cx + Dy + E = 0 设Pi xi , yi i = 1,2, … , N 为椭圆轮廓上的 N N ≥ 5 个测量点,依据最小二乘原理,所拟 合的目标函数为:
N

F A, B, C, D, E =
i=1

xi2 + Axi yi + Byi2 + Cxi + Dyi + E

2

欲使 F 为最小,需使 ?F ?F ?F ?F ?F = = = = =0 ?A ?B ?C ?D ?E 由此可以得方程:
2 x2 i yi

xi y3 i y4 i xi y2 i y3 i y2 i

x2 i yi xi y2 i x3 i xi yi xi

xi y2 i y3 i xi yi y2 i yi

xi yi y2 i xi y2 i N A B C =D E

x3 i yi
2 x2 i yi

xi y3 i x2 i yi xi y2 i xi yi

x3 i x2 i yi x2 i

解方程可以得到 A,B,C,D,E 的值。 根据椭圆的几何知识,可以计算出椭圆的五个参数:位置参数 θ, x0 , y0 以及形状参数 a, b 。 x0 = y0 = a=
2BC ?AD A 2 ?4B

2D ? AD A2 ? 4B 2 ACD ? BC2 ? D2 + 4BE ? A2 E A2 ? 4B B ? A2 + 1 ? B 2 + 1

b=

2 ACD ? BC 2 ? D2 + 4BE ? A2 E A2 ? 4B B + A2 + 1 ? B 2 + 1

θ = tan?1

a2 ? b 2 B a2 B ? b 2

附:MATLAB 程序
function [semimajor_axis, semiminor_axis, x0, y0, phi] = ellipse_fit(x, y) % % Input: % x —— a vector of x measurements %y ——a vector of y measurements % % Output: %semimajor_axis—— Magnitude of ellipse longer axis %semiminor_axis—— Magnitude of ellipse shorter axis %x0——x coordinate of ellipse center %y0——y coordinate of ellipse center %phi——Angle of rotation in radians with respect to x-axis % %explain % % % % 2*b'*x*y + c'*y^2 + 2*d'*x + 2*f'*y + g' = -x^2

M * p = bM = [2*x*y y^2 2*x 2*y ones(size(x))], p = [b c d e f g]b = -x^2. p = pseudoinverse(M) * b.

x = x(:); y = y(:);

%Construct M M = [2*x.*y y.^22*x 2*y ones(size(x))]; % Multiply (-X.^2) by pseudoinverse(M) e = M\(-x.^2); %Extract parameters from vector e a = 1; b = e(1); c = e(2); d = e(3); f = e(4); g = e(5); %Use Formulas from Mathworld to find semimajor_axis, semiminor_axis, x0, y0, and phi delta = b^2-a*c; x0 = (c*d - b*f)/delta; y0 = (a*f - b*d)/delta; phi = 0.5 * acot((c-a)/(2*b)); nom = 2 * (a*f^2 + c*d^2 + g*b^2 - 2*b*d*f - a*c*g); s = sqrt(1 + (4*b^2)/(a-c)^2); a_prime = sqrt(nom/(delta* ( (c-a)*s -(c+a)))); b_prime = sqrt(nom/(delta* ( (a-c)*s -(c+a)))); semimajor_axis = max(a_prime, b_prime); semiminor_axis = min(a_prime, b_prime);

if (a_prime<b_prime) phi = pi/2 - phi; end

欢迎交流: 邮箱:xlm233111@163.com



相关文章:
最小二乘法拟合圆公式推导及matlab实现
2009-01-17 | 最小二乘法拟合圆公式推导及 matlab 实现最小二乘法(least squares analysis)是一种数学优化技术,它通过 最小化误差的平方和找到一组数据的最佳...
最小二乘法拟合直线MATLAB程序
最小二乘法拟合直线MATLAB程序 暂无评价|0人阅读|0次下载|举报文档 最小二乘法拟合直线MATLAB程序 function linear_fit %最小二乘法拟合直线 clear; clc; prompt...
最小二乘法Matlab自编函数实现及示例
最小二乘法Matlab自编函数实现及示例_数学_自然科学_专业资料。自己编写的最小二乘法函数,非调用 一、 最小二乘拟合原理 x= x1 y= y1 x2 y2 … xn … ...
matlab_最小二乘法数据拟合_图文
matlab_最小二乘法数据拟合_电脑基础知识_IT/计算机_专业资料。定义: 最小二乘法(又称最小平方法)是一种数学优化技术。 它通过最 小化误差的平方和寻找数据的...
Matlab最小二乘法曲线拟合的应用实例
MATLAB 机械工程 最小二乘法曲线拟合的应用实例 班姓学 级: 名: 号: 指导教师: 一,实验目的 通过 Matlab 上机编程, 掌握利用 Matlab 软件进行数据拟合分析及...
曲线拟合的最小二乘法matlab举例
曲线拟合最小二乘法matlab举例_计算机软件及应用_IT/计算机_专业资料。曲线拟合最小二乘法一、曲线拟合最小二乘法原理: 曲线拟合最小二乘法原理:由已知...
最小二乘法的Matlab实现
最小二乘法的Matlab实现_天文/地理_自然科学_专业资料。今日推荐 157...2页 免费 matlab最小二乘法拟合 3页 免费 最小二乘法原理及其MATL... 暂无...
最小二乘法的多项式拟合(matlab实现)
最小二乘法的多项式拟合(matlab实现)_理学_高等教育_教育专区。最小二乘法的...(2)*x+a(3)*x.^2+a(4)*x.^3') title('拟合图') 总程序附下: ...
最小二乘法matlab程序
最小二乘法matlab程序_数学_自然科学_专业资料。文件说明 1、使用说明 1)加载...线性拟合对比 图,蓝色为按照价格升序后的每个销量点连接的直线,绿色为拟合后的...
最小二乘法matlab多项式拟合
11 第一章 matlab 最小二乘法拟合程序 1.1 最小二乘法拟合的数学方法 最小二乘法拟合的算法如下: 对于给定的一组数据 ( xi , yi ) ,i ? 1, 2,?,...
更多相关标签: