% ACPFIL.M

% NOTA:  Calcula ACP para matrices cuyas variables estan en las filas
%        Variables creadas por este programa:
%        X m n Xm Xsd k j Xs P d Q D Zs F
%------------------------------------------------------------------------------

X=input('Matriz de entrada:   ');
[m,n]=size(X);

disp('Estandarizando por filas ...')
aux=X';
Xm=mean(aux);
Xsd=std(aux);
for k=1:m
for j=1:n
auxs(j,k)=(aux(j,k)-Xm(k))/Xsd(k);
end
end
Xs=auxs';
clear aux auxs Xm Xsd m X j k

disp('Calculando SDV ...')
[P,d,Q]=svd(Xs);
clear Q

disp('Calculando D ...')
D=(diag(d).^2)./(n-1);

disp('Calculando Zs ...')
Zs=Xs'*P*(d*(diag(diag(d)))^(-4)*d')^.5*(n-1)^.5;

disp('Calculando F ...')
F=P*((d*d')/(n-1))^.5;

disp('Listo!')