精华内容
下载资源
问答
  • matlab 椭圆拟合

    2014-07-05 18:40:29
    本文档讲述了椭圆拟合的方法,希望对你有点帮助。
  • 数学建模中用matlab椭圆拟合函数拟合椭圆,你懂得!
  • matlab椭圆拟合程序

    2020-08-31 17:03:56
    本程序用于对一系列点进行椭圆拟合,其中主程序为EllipticFitting.m,输入需要拟合的点坐标,输出为所拟合的椭圆的中点坐标。
  • matlab 椭圆拟合程序

    2010-03-07 21:18:10
    ellipsefit为椭圆拟合程序。ellipse1为示例。只要输入点的坐标(无论多少点),此程序就可算出拟合的椭圆方程
  • Matlab椭圆拟合函数

    2009-06-05 21:55:17
    function [varargout]=ellipsefit(x,y) %ELLIPSEFIT Stable Direct Least Squares Ellipse Fit to Data. % [Xc,Yc,A,B,Phi,P]=ELLIPSEFIT(X,Y) finds the least squares ellipse that % best fits the data in X and...
  • 拟合椭圆首先要知道各个点的坐标,然和带入如下公式: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 ...

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

    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进行对散点数据拟合,画出最相似的椭圆
  • 通过matlab的nlinfit函数根据离散点,拟合椭圆方程的参数,绘制拟合结果图,并计算计算椭圆的长轴、短轴、面积。
  • 椭圆拟合matlab程序

    2019-03-03 15:03:02
    matlab编写的,使用最小二乘进行椭圆拟合的程序,最后得到椭圆的五个参数
  • matlab最小二乘法拟合函数代码椭圆拟合 抽象的 椭圆拟合理论研究 编码以实现椭圆拟合matlab和C ++ 比较不同的椭圆拟合理论或函数 考虑到圆锥截面的最小二乘拟合法的弊端,寻求一种有效且鲁棒的方法。 通过Matlab...
  • 椭圆拟合函数matlab

    2015-09-24 14:39:30
    椭圆拟合函数matlab,算出需要拟合的边界坐标带入函数的参数XY。
  • MATLAB)散点椭圆拟合与绘制代码

    千次阅读 2021-02-25 15:47:48
    MATLAB二维平面散点的单椭圆拟合

    (MATLAB)散点椭圆拟合与绘制代码

    by 今天不飞了

    二维平面散点的单椭圆拟合

    散点椭圆拟合

    1. 拟合
    function W = fitellipse(x,y)
    
    % 构造矩阵
    D = [x.*x, x.*y, y.*y, x, y,ones(size(x))];
    S = D'*D;
    G = zeros(6);
    G(1,3) = 2; G(3,1) = 2; G(2,2) = -1;
    
    % 求解
    [vec, val] = eig(S\G);
    [~, idx] = find(val>0&~isinf(val));
    W = vec(:,idx);
    W = sqrt(1/(W'*S*W))*W;
    end
    
    1. 参数计算

    中心,长轴,短轴,倾角

    function [Center,Axis,Theta] = calellipseparams(W)
    
    a = W(1); 
    b = W(2); 
    c = W(3); 
    d = W(4); 
    e = W(5); 
    f = W(6);
    
    % 中心
    cx = (b*e-2*c*d)/(4*a*c-b^2);
    cy = (b*d-2*a*e)/(4*a*c-b^2);
    Center = [cx,cy];
    
    % 长短轴  
    MA1 = sqrt(2*(a*cx^2+c*cy^2+b*cx*cy-f)/(a+c+sqrt((a-c)^2+b^2)));
    MA2= sqrt(2*(a*cx^2+c*cy^2+b*cx*cy-f)/(a+c-sqrt((a-c)^2+b^2)));
    
    Axis = [max(MA1,MA2),min(MA1,MA2)];
    
    % 长轴倾角
    if b==0
        if f*a>f*c
            Theta = 0;
        else  
            Theta = pi/2;
        end
    else
        if f*a>f*c
            alpha = atan((a-c)/b);
            if alpha<0
                Theta = 0.5*(-pi/2-alpha);
            else
                Theta = 0.5*(pi/2-alpha);
            end
        else
            alpha = atan((a-c)/b);
            if alpha<0
                Theta = pi/2+0.5*(-pi/2-alpha);
            else
                Theta = pi/2+0.5*(pi/2-alpha);
            end
        end
    end
    
    end
    
    1. 绘制
    function drawellipse(W)
    
    % 获取椭圆参数
    [Center,Axis,Theta] = calellipseparams(W);
    
    % 绘制椭圆
    funs = @(x,y) W(1)*x.^2 + W(2)*x.*y + W(3)*y.^2 + W(4)*x + W(5)*y + W(6);
    fimplicit(funs,'LineWidth',2)
    
    % 绘制长短轴
    Majcoor = [-Axis(1),0; Axis(1),0];
    Mincoor = [0,-Axis(2); 0,Axis(2)];
    RM = [cos(Theta),-sin(Theta);sin(Theta),cos(Theta)];
    Majcoor = Majcoor*RM'+Center;
    Mincoor = Mincoor*RM'+Center;
    
    line(Majcoor(:,1),Majcoor(:,2),'Color','r','LineWidth',3)
    line(Mincoor(:,1),Mincoor(:,2),'Color','g','LineWidth',3)
    plot(Center(1),Center(2),'y.','MarkerSize',15)
    
    end
    

    测试

    %% 测试一
    % 生成测试数据
    theta = (0:0.05:2*pi)';
    w = 0.1; % 噪声
    x = 2*cos(theta)+w*rand(length(theta),1);
    y = sin(theta)+w*rand(length(theta),1);
    
    % 椭圆拟合
    W = fitellipse(x,y);
    
    % 绘制结果
    figure
    plot(x,y,'.'), axis equal
    hold on
    drawellipse(W)
    

    在这里插入图片描述

    %% 测试二
    % 生成测试数据
    theta = (-pi:0.01:pi)';
    w = 0.1; % 噪声
    x1 = 2*cos(theta)+w*rand(length(theta),1);
    y1 = sin(theta)+w*rand(length(theta),1);
    
    % 加入干扰
    theta = (0.5*pi:0.05:pi)';
    x2 = 1.5*cos(theta)+w*rand(length(theta),1)+1;
    y2 = sin(theta)+w*rand(length(theta),1)+0.5;
    
    % 椭圆拟合
    W = fitellipse([x1;x2],[y1;y2]);
    
    % 绘制结果
    figure
    plot([x1;x2],[y1;y2],'.'), axis equal
    hold on
    drawellipse(W)
    

    在这里插入图片描述


    其他

    1. 测试了一些数据,目前没发现bug。如有问题,欢迎留言告诉我
    2. 多椭圆拟合,图像椭圆检测等可点击椭圆检测
    展开全文
  • 网上有很多椭圆拟合算法程序,但是过于冗长繁琐,自己重新推导了下,用简单几行代码就实现了椭圆拟合法,椭球拟合法可以在此基础上添加几个量就可以得到了。
  • matlab中的椭圆拟合

    2020-10-05 01:42:05
    matlab对离散信号的椭圆拟合 clear data=csvread('text.csv'); x=data(:,1); y=data(:,2); X=[x.^2,y.^2,x.*y,x,y]; Y=ones(size(x)); L=regress(Y, X); % Y=X*B B为回归系数 fimplicit(@(x,y) L(1).*x.^2+L(2).*y.^...

    椭圆拟合

    matlab对离散信号的椭圆拟合

    clear
    data=csvread('text.csv');
    x=data(:,1);
    y=data(:,2);
    X=[x.^2,y.^2,x.*y,x,y];
    Y=ones(size(x));
    L=regress(Y, X); % Y=X*B B为回归系数
    fimplicit(@(x,y) L(1).*x.^2+L(2).*y.^2+L(3).*x.*y+L(4).*x+L(5).*y-1)
    hold on
    scatter(x,y)
    
    展开全文
  • 提供了基于最小二乘法的椭圆拟合matlab仿真程序
  • matlab 椭圆方程拟合

    万次阅读 2014-04-23 09:46:45
    拟合椭圆首先要知道各个点的坐标,ra

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

     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

    热门讨论 2011-08-17 17:25:46
    这是一个快速和非迭代椭圆拟合算法 . 用法: A = EllipseDirectFit(XY) 输入: XY(n,2) 数组是n个点的坐标 x(i)=XY(i,1), y(i)=XY(i,2) 输出: A = [a b c d e f]' 时椭圆拟合的系数向量其方程方程为:: ax^2 + bxy...
  • matlab 拟合椭圆

    万次阅读 2017-08-02 16:25:10
    椭圆拟合
  • 这是一种快速且非迭代的椭圆拟合。 用法: A = EllipseDirectFit(XY) 输入:XY(n,2)是n个点的坐标数组x(i)=XY(i,1), y(i)=XY(i,2) 输出:A = [abcdef]' 是系数向量最佳拟合椭圆的方程: ax^2 + bxy + cy^2 + dx ...
  • clear,clcfx1=@(b,x)b(1)+b(2)*x+sqrt(b(3)+b(4)*x+b(5)*x.^2);fx2=@(b,x)b(1)+b(2)*x-sqrt(b(3)+b(4)*x+b(5)*x.^2);figure(1),clfb=[304.896155-0.0468025122-25124.8078330.246104-1.05243991];...
  • stats01 发表于 2013-4-10 22:49 直接将数据拷贝在论坛可能更加适当。数据:639*2(左边x,右边y)339 367339 368339 369339 370339 371339 372339 373340 364340 365340 3...
  • 椭圆拟合matlab代码

    2009-06-18 21:22:33
    椭圆拟合程序的源码,用于图像处理。 Description There are two main methods for least squares ellipse fitting: 1) Minimise algebraic distance, i.e. minimise sum(F(x)^2) subject to some constraint, ...
  • 椭圆拟合Matlab实现

    2011-10-18 22:57:29
    针对一组x,y值的基于最小平方方差和的椭圆和圆的拟合,用matlab实现
  • 这是一种快速的非迭代椭圆拟合,在快速非迭代椭圆拟合中,这是最准确和稳健的。 它采用数据点的 xy 坐标,并返回椭圆方程的系数: ax^2 + bxy + cy^2 + dx + ey + f = 0, 即它返回向量 A=(a,b,c,d,e,f)。 要将这...
  • 摘 要: 提出一种基于最小外包矩形的快速椭圆拟合方法,该方法利用最小二乘法获得目标的最小外包矩形框,再求取外包矩形框的内切椭圆,该椭圆能有效反映目标的大部分运动信息。本文对该方法进行了目标拟合的有效性和...
  • matlab拟合椭圆

    千次阅读 2019-08-15 16:11:38
    只为暂时记录 http://blog.sina.com.cn/s/blog_471e6c930102x96q.html https://blog.csdn.net/qq_30282427/article/details/82117365

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,177
精华内容 470
关键字:

matlab椭圆拟合

matlab 订阅