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

最小二乘法拟合椭圆附带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程序
最小二乘法曲线拟合Matlab程序_IT/计算机_专业资料。方便大家使用的最小二乘法曲线拟合Matlab 程序非常方便用户使用,直接按提示操作即可;这里我演示一个例子:...
matlab根据坐标拟合椭圆程序
matlab根据坐标拟合椭圆程序_数学_自然科学_专业资料。clear; clc; close all; ...[1 1 1 1 1 1]; warning off % 拟合系数,最小二乘方法 p=nlinfit(Up,...
最小二乘法及matlab程序
最小二乘法matlab 程序 最小二乘法简介:最小二乘法(又称最小平方法)是...Q b 。 Matlab 命令: 一次函数线性拟合使用 polyfit(x,y,1) ; 多项式函数...
最小二乘法拟合圆公式推导及matlab实现
最小二乘法拟合圆公式推导及matlab实现_数学_自然科学_专业资料。更新matlab code, 同样从网上搜得2014-10-01 | 最小二乘法拟合圆公式推导及 matlab 实现最小二...
最小二乘法拟合圆公式推导及matlab实现
2009-01-17 | 最小二乘法拟合圆公式推导及 matlab 实现最小二乘法(least squares analysis)是一种数学优化技术,它通过 最小化误差的平方和找到一组数据的最佳...
最小二乘法拟合直线MATLAB程序
最小二乘法拟合直线MATLAB程序 暂无评价|0人阅读|0次下载|举报文档 最小二乘法拟合直线MATLAB程序 function linear_fit %最小二乘法拟合直线 clear; clc; prompt...
最小二乘圆拟合matlab程序
最小二乘圆拟合matlab程序_信息与通信_工程科技_专业资料。可以任意修改设定圆心和半径的最小二乘法拟合matlab程序最小二乘圆拟合matlab程序: t=0:0.01:pi; a=...
matlab_最小二乘法数据拟合_图文
matlab_最小二乘法数据拟合_电脑基础知识_IT/计算机_专业资料。定义: 最小二乘法(又称最小平方法)是一种数学优化技术。 它通过最 小化误差的平方和寻找数据的...
matlab根据坐标拟合椭圆程序
matlab根据坐标拟合椭圆程序_理学_高等教育_教育专区。用matlab 根据已知坐标拟合椭圆...最小二乘圆拟合matlab程... 1页 免费 最小二乘法圆拟合ppt(含... 10页...
曲线拟合_线性最小二乘法及其MATLAB程序
函数逼近与曲线拟合 1 例 7.2.1 曲线拟合的线性最小二乘法及其 MATLAB 程序给出一组数据点 ( xi , yi ) 列入表 7–2 中, 试用线性最小二乘法拟合...
更多相关标签: