makebasis.m
上传用户:lzb_9569
上传日期:2013-05-03
资源大小:5k
文件大小:1k
源码类别:

生物技术

开发平台:

Matlab

  1. function A = makebasis(X)
  2. % A = makebase(X)
  3. %
  4. % Function that creates the "faces space", i. e. the
  5. % basis of the space created throught the eigenvectors
  6. % of the covariance matrix of the population matrix.
  7. %
  8. % X = Population matrix (as described in function
  9. %     makepop().
  10. %
  11. % A = Orthogonal basis of the face space.
  12. % Covariance matrix:
  13. ['Computing the covariance matrix of X (Cx)...']
  14. Cx = cov(X'); % The matrix X must be transposed because each row 
  15.               % of X ia a variable, and each column of X is an
  16.               % observation (face).
  17.               
  18. ['Computing the eigenfaces and eigenvalues of Cx...']
  19. [V,D] = eig(Cx); % D = diagonal matrix with the eigenvalues 
  20.                  % V = matrix in witch eacj column is the 
  21.                  % respective eigenfaces:
  22.                  % Cx*V = V*D.
  23.                  
  24. ['Sorting the eigenvectors with respect to the decreasing order of the eigenvalues...'] 
  25. eigenvalues = diag(D);
  26. [eigenvalues, index] = sort(eigenvalues);
  27. sizeV=size(V,2);
  28. A=zeros(size(V));
  29. for c=1:sizeV,
  30.    eigenvalues_sort(c) = eigenvalues(sizeV-c+1);
  31.    A(:,c) = V(:,index(sizeV-c+1)); % A is the eigenvector matrix sorted with respect to the eigenvalues.
  32. end
  33. return