关于MATLAB,哪位大神帮看看这个函数哪里错了function a=fit_ellipse(x,y)D=[x.*x x.*y y.*y x y ones(size(x))];S=D'*D;C(6,6)=0;C(1,3)=2;C(2,2)=-1;C(3,1)=2;[gevec,geval]=eig(inv(S)*C);[PosR,PosC]=find(geval>0 & ~isinf(geval));a=gevec(:,PosC

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/04 18:44:50
关于MATLAB,哪位大神帮看看这个函数哪里错了function a=fit_ellipse(x,y)D=[x.*x x.*y y.*y x y ones(size(x))];S=D'*D;C(6,6)=0;C(1,3)=2;C(2,2)=-1;C(3,1)=2;[gevec,geval]=eig(inv(S)*C);[PosR,PosC]=find(geval>0 & ~isinf(geval));a=gevec(:,PosC

关于MATLAB,哪位大神帮看看这个函数哪里错了function a=fit_ellipse(x,y)D=[x.*x x.*y y.*y x y ones(size(x))];S=D'*D;C(6,6)=0;C(1,3)=2;C(2,2)=-1;C(3,1)=2;[gevec,geval]=eig(inv(S)*C);[PosR,PosC]=find(geval>0 & ~isinf(geval));a=gevec(:,PosC
关于MATLAB,哪位大神帮看看这个函数哪里错了
function a=fit_ellipse(x,y)
D=[x.*x x.*y y.*y x y ones(size(x))];
S=D'*D;
C(6,6)=0;C(1,3)=2;C(2,2)=-1;C(3,1)=2;
[gevec,geval]=eig(inv(S)*C);
[PosR,PosC]=find(geval>0 & ~isinf(geval));
a=gevec(:,PosC);
该函数是要根据已知点集求最佳椭圆一般方程的系数
每次输入点集后调用函数都说第5行[gevec,geval]=eig(inv(S)*C);有错误
到底是怎么回事呢?

关于MATLAB,哪位大神帮看看这个函数哪里错了function a=fit_ellipse(x,y)D=[x.*x x.*y y.*y x y ones(size(x))];S=D'*D;C(6,6)=0;C(1,3)=2;C(2,2)=-1;C(3,1)=2;[gevec,geval]=eig(inv(S)*C);[PosR,PosC]=find(geval>0 & ~isinf(geval));a=gevec(:,PosC
如果你的输入是行向量,那么你的D的维数是6乘以你的向量个数,比如你的行向量个数是9的话,那D就是54×54 的矩阵,而C是6×6的矩阵维数不一样,矩阵相乘出错,如果你的输入是列向量,那么D的维数是6×6的矩阵,维数匹配,不会有问题