PCA2.m 699 Bytes
function [eigenvalues, eigenvectors, Mean_Vector]=PCA2(X,varRetain)
% [eigenvalues, eigenvectors, Mean_Vector]=PCA2(X)
%
%Compute the eienvectors of X when the sample number is larger than the feature lenght 

[Row Column]=size(X);
Mean_Vector=mean(X,2);
m=repmat(Mean_Vector(:),1,Column);
X=X-m;
C=X*X'./Column;
[V,D]=eig(C);
eigenvalues=diag(D);
%Ordered by eigenvalues%
[eigenvalues,Index]=sort(eigenvalues);
eigenvalues=eigenvalues(end:-1:1);
Index=Index(end:-1:1);
eigenvectors=V(:,Index);

if nargin == 2,
    d = cumsum(eigenvalues)/ sum(eigenvalues);
    [a1 a2] = max(d > varRetain);
    eigenvalues = eigenvalues(1:a2);
    eigenvectors = eigenvectors(:,1:a2);
end