给出一些椭圆上离散的点的横纵坐标,怎么用matlab拟合出椭圆方程比如这些点是(1,0) (-1,0) (0,2 ) (0,-2)

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/07 15:56:17

给出一些椭圆上离散的点的横纵坐标,怎么用matlab拟合出椭圆方程比如这些点是(1,0) (-1,0) (0,2 ) (0,-2)
给出一些椭圆上离散的点的横纵坐标,怎么用matlab拟合出椭圆方程
比如这些点是(1,0) (-1,0) (0,2 ) (0,-2)

给出一些椭圆上离散的点的横纵坐标,怎么用matlab拟合出椭圆方程比如这些点是(1,0) (-1,0) (0,2 ) (0,-2)
M文件的代码如下:
function [newX,newY,v]=FitEllip(X,Y,N)
%本函数用最小二乘法拟合椭圆
%输入变量:X、Y为数据点坐标(列向量),N为输出椭圆上的点的数量
%输出变量:newX,newY为拟合的椭圆上的点的坐标(列向量)
%输出变量:v为拟合的椭圆参数,是一个5维行向量,v(1)、v(2)分别为长、短轴,v(3)、v(4)分别为椭圆中心点横、纵坐标,v(5)为长轴与x轴夹角
% a = fitellip(X1,Y1);
mx = mean(X);my = mean(Y); sx = (max(X)-min(X))/2; sy = (max(Y)-min(Y))/2; x = (X-mx)/sx; y = (Y-my)/sy;
% Build design matrix
D = [ x.*x x.*y y.*y x y ones(size(x)) ];
% Build scatter matrix
S = D'*D;
% Build 6x6 constraint matrix
C(6,6) = 0; C(1,3) = -2; C(2,2) = 1; C(3,1) = -2;
% Solve eigensystem
[gevec,geval] = eig(S,C);
% Find the negative eigenvalue
[NegR1,NegC] = find(geval < 0 & isinf(geval));
% Extract eigenvector corresponding to positive eigenvalue
A = gevec(:,NegC);
% unnormalize
a(1)=A(1)*sy*sy;
a(2)=A(2)*sx*sy;
a(3)=A(3)*sx*sx;
a(4)=-2*A(1)*sy*sy*mx -A(2)*sx*sy*my + A(4)*sx*sy*sy;
a(5)=-A(2)*sx*sy*mx -2*A(3)*sx*sx*my + A(5)*sx*sx*sy;
a(6)=A(1)*sy*sy*mx*mx + A(2)*sx*sy*mx*my + A(3)*sx*sx*my*my-A(4)*sx*sy*sy*mx -A(5)*sx*sx*sy*my+ A(6)*sx*sx*sy*sy;
a=a';
% get ellipse orientation
theta = atan2(a(2),a(1)-a(3))/2;
% get scaled major/minor axes
ct = cos(theta); st = sin(theta); ap = a(1)*ct*ct + a(2)*ct*st + a(3)*st*st; cp = a(1)*st*st -a(2)*ct*st + a(3)*ct*ct;
% get translations
T = [[a(1) a(2)/2]' [a(2)/2 a(3)]']; t = -inv(2*T)*[a(4) a(5)]'; cx = t(1); cy = t(2);
% get scale factor
val = t'*T*t; scale = 1 / (val-a(6));
% get major/minor axis radii
r1 = 1/sqrt(scale*ap);
r2 = 1/sqrt(scale*cp);
v = [r1 r2 cx cy theta]';
%判定长轴、短轴是否与r1、r2对应
if r1

我有一个思路:用参数方程表示椭圆,然后设法拟合参数。
具体说的话,椭圆的方程有5个自由度:长轴、短轴、(相对于标准位置椭圆的)旋转和平移。因此4个点是不够的,当然如果您这里限定少一些自由度的话问题就会变简单。
然后我想可以用霍夫变换的思路来求参数。
可以进一步讨论!...

全部展开

我有一个思路:用参数方程表示椭圆,然后设法拟合参数。
具体说的话,椭圆的方程有5个自由度:长轴、短轴、(相对于标准位置椭圆的)旋转和平移。因此4个点是不够的,当然如果您这里限定少一些自由度的话问题就会变简单。
然后我想可以用霍夫变换的思路来求参数。
可以进一步讨论!

收起

给出一些椭圆上离散的点的横纵坐标,怎么用matlab拟合出椭圆方程比如这些点是(1,0) (-1,0) (0,2 ) (0,-2) 怎么用matlab代码拟合椭圆?离散点拟合椭圆,求matlab代码,要确定可以用的! 求过椭圆x^2+2y^2=27上横、纵坐标相等的点的切线斜率 如何求解对离散点的最优椭圆拟合? 一些离散点,我拟合出一条直线,怎样评价这些离散点与这条直线的离散程度 设F1,F2为椭圆左右焦点,椭圆上点M的横坐标等于右焦点横坐标,纵坐标等于短半轴长的2/3,求椭圆的离心率 一个关于椭圆计算的问题一个椭圆,中心在坐标原点,2焦点在X轴上,长半轴长为a,短半轴长为b,已知在椭圆上的点的横坐标为X,求它的纵坐标?请给出最后计算结果的等式 matlab 画图时 怎么将一个点对应的横纵坐标显示在图上 matlab怎么连线两组离散点?有两组离散点,第一组点a的横坐标保存在数组xa,纵坐标保存在ya,第二组点b的横坐标保存在数组xb,纵坐标保存在yb,现在要将这两组点分别直线连接(a和b点数量相同). 通过一些离散点,如何拟合成一个完整的椭圆曲线的matlab程序?如题,请举例说明,最后能生成下图所示的样子 过椭圆X^2+2Y^2=27上横、纵坐标相等的点的切线斜率,要过程谢谢. 椭圆x2/45+y2/20=1的焦点为F1,F2,点P在椭圆上,PF1垂直于PF2,则点P的纵坐标为 求椭圆x2-xy+y2=3上纵坐标最大和最小的点(具体算法),急用, 我用matlab 做出如下图形,是离散点plot出来的曲线,我现在想求出图中已知纵坐标值下的横坐标,怎样办到? 【急】高二解析几何-椭圆题已知点M是椭圆上一点,该点的横坐标等于椭圆右焦点的横坐标,其纵坐标等于半短轴长的2/3,求椭圆的离心率. 一焦点在横坐标,已知椭圆上横坐标等于焦点横坐标的点,其纵坐标等于短半轴长的2/3,求椭圆的离心率. 椭圆上横坐标为c的点纵坐标为?(c是椭圆公式a²+b²=c²里的c) 用c语言怎么编简单图形处理系统?设某图形处理程序只考虑点、直线、圆三种基本图形.对于点,给出点的横纵坐标;对于直线,给出直线方程ax+by+c=0的三个系数a,b,c;对于圆,给出圆心坐标和半