% ACPCOL.M

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

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

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

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

disp('Calculando D ...')
D=(d'*d)/(m-1);

disp('Calculando Zs ...')
Zs=Xs*Q*D^(-.5);

disp('Calculando F ...')
F=Q*D^.5;

disp('Listo!')