1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| function [outellip,SurfaceMat] = FncEllipse(VectX,VectY)
[nr,nc]=size(VectX);
for j=1:nc
mult=1.96;
%%%%%%%%%%%%%%%%%% Matrice de covariance
V = cov([VectX(:,j) VectY(:,j)]);
%%%%%%%%%%%%%%%%%% EigenVect et Val
[vec, val] = eig(V);
%%%%%%%%%%%%%%%%%%%%% Calcul de l'aire
axes = mult*sqrt(svd(val)); %--Axes: create singular values vector (eigenvalues ordered by decreasing values, non-negative)
angles = atan2(vec(2, :), vec(1,:))*180/pi ; %--angles of each principal vector in degree
Surface = pi*prod(axes); %--area
t = linspace(0, 2*pi);
ellip = vec*mult*sqrt(val)*[cos(t);sin(t)] + repmat([mean(VectX(:,j));mean(VectY(:,j))], 1, 100);
ellip = ellip';
axes = axes';
SurfaceMat(1,j)=Surface;
outellip(j).ellip=ellip;
outellip(j).surface=Surface;
end |
Partager