function ellipses = generateEllipses2(x,parameters,mus,dim1,dim2) scale = 1; handle = plot(x(:, dim1), x(:, dim2), 'ko'); axis equal; hold on plot(mus(:,dim1),mus(:,dim2),'gx'); for class = 1:parameters.nc covs= parameters.covariances(:,:,class); covars=[covs(dim1,dim1) covs(dim1,dim2); covs(dim2,dim1) covs(dim2,dim2)]; means = [parameters.mus(class,dim1) parameters.mus(class,dim2)]; [v,d] = eig(covars); for j = 1:2 % Ensure that eigenvector has unit length v(:,j) = v(:,j)/norm(v(:,j)); start=means-sqrt(d(j,j))*(v(:,j)')*scale; endpt=means+sqrt(d(j,j))*(v(:,j)')*scale; linex = [start(1) endpt(1)]; liney = [start(2) endpt(2)]; %line(linex, liney, 'Color', 'k', 'LineWidth', 3) end % Plot ellipses of one standard deviation theta = 0:0.02:2*pi; xs = sqrt(d(1,1))*cos(theta)*scale; ys = sqrt(d(2,2))*sin(theta)*scale; % Rotate ellipse axes ellipse = (v*([xs; ys]))'; % Adjust centre ellipse = ellipse + ones(length(theta), 1)*means; plot(ellipse(:,1), ellipse(:,2), 'r-'); end hold off pause