person-re-ranking/evaluation/utils/applypca2.m

38 lines
817 B
Matlab

function [ux,u,m] = applypca2(X)
% [ux,u,m] = applypca(X)
%
% finds principal components of
%
% input:
% x input data (each column is an input vector)
%
% output:
% ux data projected onto pca (1st row=leading principal component)
% u the orthogonal matrix with all principal components
% m mean of the data
%
% You can recover the original data with
%
% xoriginal=u*ux+repmat(m,1,size(ux,2));
%
% See also pca
%
% copyright by Kilian Q. Weinberger, 2006
% [u,v]=pca(X);
[d,N] = size(X);
mm = mean(X,2);
X = X - mm*ones(1,N); % remove mean from data
cc = cov(X,1); % compute covariance
[cvv,cdd] = eig(cc); % compute eignvectors
[zz,ii] = sort(diag(-cdd)); % sort according to eigenvalues
evects = cvv(:,ii); % pick leading eigenvectors
u = X*evects;
m=mean(X,2);
ux=u'*(X-repmat(m,1,size(X,2)));