annotate toolboxes/FullBNT-1.0.7/KPMstats/pca.m @ 0:e9a9cd732c1e tip

first hg version after svn
author wolffd
date Tue, 10 Feb 2015 15:05:51 +0000
parents
children
rev   line source
wolffd@0 1 function [PCcoeff, PCvec] = pca(data, N)
wolffd@0 2 %PCA Principal Components Analysis
wolffd@0 3 %
wolffd@0 4 % Description
wolffd@0 5 % PCCOEFF = PCA(DATA) computes the eigenvalues of the covariance
wolffd@0 6 % matrix of the dataset DATA and returns them as PCCOEFF. These
wolffd@0 7 % coefficients give the variance of DATA along the corresponding
wolffd@0 8 % principal components.
wolffd@0 9 %
wolffd@0 10 % PCCOEFF = PCA(DATA, N) returns the largest N eigenvalues.
wolffd@0 11 %
wolffd@0 12 % [PCCOEFF, PCVEC] = PCA(DATA) returns the principal components as well
wolffd@0 13 % as the coefficients. This is considerably more computationally
wolffd@0 14 % demanding than just computing the eigenvalues.
wolffd@0 15 %
wolffd@0 16 % See also
wolffd@0 17 % EIGDEC, GTMINIT, PPCA
wolffd@0 18 %
wolffd@0 19
wolffd@0 20 % Copyright (c) Ian T Nabney (1996-2001)
wolffd@0 21
wolffd@0 22 if nargin == 1
wolffd@0 23 N = size(data, 2);
wolffd@0 24 end
wolffd@0 25
wolffd@0 26 if nargout == 1
wolffd@0 27 evals_only = logical(1);
wolffd@0 28 else
wolffd@0 29 evals_only = logical(0);
wolffd@0 30 end
wolffd@0 31
wolffd@0 32 if N ~= round(N) | N < 1 | N > size(data, 2)
wolffd@0 33 error('Number of PCs must be integer, >0, < dim');
wolffd@0 34 end
wolffd@0 35
wolffd@0 36 % Find the sorted eigenvalues of the data covariance matrix
wolffd@0 37 if evals_only
wolffd@0 38 PCcoeff = eigdec(cov(data), N);
wolffd@0 39 else
wolffd@0 40 [PCcoeff, PCvec] = eigdec(cov(data), N);
wolffd@0 41 end
wolffd@0 42