clc;

% 1. Comprimento da sépala em cm
% 2. Largura da sépala em cm  
% 3. Comprimento da pétala em cm
% 4. Largura da pétala em cm  
% 5. Classe: 1 - Iris Setosa
%            2 - Iris Versicolor
%            3 - Iris Virginica 
iris=[5.1,3.5,1.4,0.2,1;
4.9,3.0,1.4,0.2,1;
4.7,3.2,1.3,0.2,1;
4.6,3.1,1.5,0.2,1;
5.0,3.6,1.4,0.2,1;
5.4,3.9,1.7,0.4,1;
4.6,3.4,1.4,0.3,1;
5.0,3.4,1.5,0.2,1;
4.4,2.9,1.4,0.2,1;
4.9,3.1,1.5,0.1,1;
5.4,3.7,1.5,0.2,1;
4.8,3.4,1.6,0.2,1;
4.8,3.0,1.4,0.1,1;
4.3,3.0,1.1,0.1,1;
5.8,4.0,1.2,0.2,1;
5.7,4.4,1.5,0.4,1;
5.4,3.9,1.3,0.4,1;
5.1,3.5,1.4,0.3,1;
5.7,3.8,1.7,0.3,1;
5.1,3.8,1.5,0.3,1;
5.4,3.4,1.7,0.2,1;
5.1,3.7,1.5,0.4,1;
4.6,3.6,1.0,0.2,1;
5.1,3.3,1.7,0.5,1;
4.8,3.4,1.9,0.2,1;
5.0,3.0,1.6,0.2,1;
5.0,3.4,1.6,0.4,1;
5.2,3.5,1.5,0.2,1;
5.2,3.4,1.4,0.2,1;
4.7,3.2,1.6,0.2,1;
4.8,3.1,1.6,0.2,1;
5.4,3.4,1.5,0.4,1;
5.2,4.1,1.5,0.1,1;
5.5,4.2,1.4,0.2,1;
4.9,3.1,1.5,0.1,1;
5.0,3.2,1.2,0.2,1;
5.5,3.5,1.3,0.2,1;
4.9,3.1,1.5,0.1,1;
4.4,3.0,1.3,0.2,1;
5.1,3.4,1.5,0.2,1;
5.0,3.5,1.3,0.3,1;
4.5,2.3,1.3,0.3,1;
4.4,3.2,1.3,0.2,1;
5.0,3.5,1.6,0.6,1;
5.1,3.8,1.9,0.4,1;
4.8,3.0,1.4,0.3,1;
5.1,3.8,1.6,0.2,1;
4.6,3.2,1.4,0.2,1;
5.3,3.7,1.5,0.2,1;
5.0,3.3,1.4,0.2,1;
7.0,3.2,4.7,1.4,2;
6.4,3.2,4.5,1.5,2;
6.9,3.1,4.9,1.5,2;
5.5,2.3,4.0,1.3,2;
6.5,2.8,4.6,1.5,2;
5.7,2.8,4.5,1.3,2;
6.3,3.3,4.7,1.6,2;
4.9,2.4,3.3,1.0,2;
6.6,2.9,4.6,1.3,2;
5.2,2.7,3.9,1.4,2;
5.0,2.0,3.5,1.0,2;
5.9,3.0,4.2,1.5,2;
6.0,2.2,4.0,1.0,2;
6.1,2.9,4.7,1.4,2;
5.6,2.9,3.6,1.3,2;
6.7,3.1,4.4,1.4,2;
5.6,3.0,4.5,1.5,2;
5.8,2.7,4.1,1.0,2;
6.2,2.2,4.5,1.5,2;
5.6,2.5,3.9,1.1,2;
5.9,3.2,4.8,1.8,2;
6.1,2.8,4.0,1.3,2;
6.3,2.5,4.9,1.5,2;
6.1,2.8,4.7,1.2,2;
6.4,2.9,4.3,1.3,2;
6.6,3.0,4.4,1.4,2;
6.8,2.8,4.8,1.4,2;
6.7,3.0,5.0,1.7,2;
6.0,2.9,4.5,1.5,2;
5.7,2.6,3.5,1.0,2;
5.5,2.4,3.8,1.1,2;
5.5,2.4,3.7,1.0,2;
5.8,2.7,3.9,1.2,2;
6.0,2.7,5.1,1.6,2;
5.4,3.0,4.5,1.5,2;
6.0,3.4,4.5,1.6,2;
6.7,3.1,4.7,1.5,2;
6.3,2.3,4.4,1.3,2;
5.6,3.0,4.1,1.3,2;
5.5,2.5,4.0,1.3,2;
5.5,2.6,4.4,1.2,2;
6.1,3.0,4.6,1.4,2;
5.8,2.6,4.0,1.2,2;
5.0,2.3,3.3,1.0,2;
5.6,2.7,4.2,1.3,2;
5.7,3.0,4.2,1.2,2;
5.7,2.9,4.2,1.3,2;
6.2,2.9,4.3,1.3,2;
5.1,2.5,3.0,1.1,2;
5.7,2.8,4.1,1.3,2;
6.3,3.3,6.0,2.5,3;
5.8,2.7,5.1,1.9,3;
7.1,3.0,5.9,2.1,3;
6.3,2.9,5.6,1.8,3;
6.5,3.0,5.8,2.2,3;
7.6,3.0,6.6,2.1,3;
4.9,2.5,4.5,1.7,3;
7.3,2.9,6.3,1.8,3;
6.7,2.5,5.8,1.8,3;
7.2,3.6,6.1,2.5,3;
6.5,3.2,5.1,2.0,3;
6.4,2.7,5.3,1.9,3;
6.8,3.0,5.5,2.1,3;
5.7,2.5,5.0,2.0,3;
5.8,2.8,5.1,2.4,3;
6.4,3.2,5.3,2.3,3;
6.5,3.0,5.5,1.8,3;
7.7,3.8,6.7,2.2,3;
7.7,2.6,6.9,2.3,3;
6.0,2.2,5.0,1.5,3;
6.9,3.2,5.7,2.3,3;
5.6,2.8,4.9,2.0,3;
7.7,2.8,6.7,2.0,3;
6.3,2.7,4.9,1.8,3;
6.7,3.3,5.7,2.1,3;
7.2,3.2,6.0,1.8,3;
6.2,2.8,4.8,1.8,3;
6.1,3.0,4.9,1.8,3;
6.4,2.8,5.6,2.1,3;
7.2,3.0,5.8,1.6,3;
7.4,2.8,6.1,1.9,3;
7.9,3.8,6.4,2.0,3;
6.4,2.8,5.6,2.2,3;
6.3,2.8,5.1,1.5,3;
6.1,2.6,5.6,1.4,3;
7.7,3.0,6.1,2.3,3;
6.3,3.4,5.6,2.4,3;
6.4,3.1,5.5,1.8,3;
6.0,3.0,4.8,1.8,3;
6.9,3.1,5.4,2.1,3;
6.7,3.1,5.6,2.4,3;
6.9,3.1,5.1,2.3,3;
5.8,2.7,5.1,1.9,3;
6.8,3.2,5.9,2.3,3;
6.7,3.3,5.7,2.5,3;
6.7,3.0,5.2,2.3,3;
6.3,2.5,5.0,1.9,3;
6.5,3.0,5.2,2.0,3;
6.2,3.4,5.4,2.3,3;
5.9,3.0,5.1,1.8,3];

X=iris(:,1:end-1);
[r,c]=size(X);%calcula numero de r linhas e c colunas de X
Mx=mean(X);%uma linha de c medias, para cada coluna de X
Xm=X-ones(r,1)*Mx; %ones(r,1)*Mx, para termos r linhas de Mx

Xm=X;
disp('Matriz de covariância');
C=cov(Xm)
[V,D]=eig(C);%autovetores e autovalores da matriz de covariância de Xm

%*********************ATENÇÃO, BIRIGUI*******************************
[l,i]=sort(diag(D),'descend');%ordena os autovetores em ordem descendente
disp('Autovalores ordenados');
l'
disp('Autovetores');
V(:,i)
disp('Porcentagem explicativa acumulada das variáveis');
pe=cumsum(l)/sum(l) %porcentagem explicativa acumulada de cada eixo
O=V(:,i(1:2));%toma os dois eixos principais de acordo com a ordem dos autovalores descentes

%==================================================================================%
%Veja que matematicamente, Y=O'X. Na visão de BD Y está transposto. Logo,          %
%para vermos como queremos (visão BD) temos que transpor Y. Assim, Y'=X'O''= X'O.  %
%Como temos X em notação de BD, o nosso Y em notação de BD será Y=XO               %
%==================================================================================%

Y=Xm*O;%Xm rotacionado pelos eixos principais. 
%plota 50 tipos de cada especie com suas cores r,g,b, tamanho 2

plot(Y(1:50,1),Y(1:50,2),'or',Y(51:100,1),Y(51:100,2),'og',Y(101:150,1),Y(101:150,2),'ob','LineWidth',2);
title('Rotação dos eixos principais de X. Ou seja, gerar um Y=O''X');%título do gráfico
xlabel('Eixo 1'); %nome para eixo x
ylabel('Eixo 2'); %nome para eixo y
legend('Setosa','Versicolor','Virginica'); %coloca legendas no gráfico
legend('location','best'); %na melhor posição
