Home > chronux > fly_track > FTrack > functions > pca1.m

pca1

PURPOSE ^

PCA1: Perform PCA using covariance.

SYNOPSIS ^

function [signals, PC, V, data] = pca1(data)

DESCRIPTION ^

 PCA1: Perform PCA using covariance.

   Usage:
       [signals, PC, V] = pca1(data)

   data (in)   - MxN matrix of input data
             (M dimensions, N trials)
   signals - MxN matrix of projected data
   PC      - each column is a principal component
   V       - Mx1 matrix of variances
   data (out) - mean subtracted data.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [signals, PC, V, data] = pca1(data)
0002 % PCA1: Perform PCA using covariance.
0003 %
0004 %   Usage:
0005 %       [signals, PC, V] = pca1(data)
0006 %
0007 %   data (in)   - MxN matrix of input data
0008 %             (M dimensions, N trials)
0009 %   signals - MxN matrix of projected data
0010 %   PC      - each column is a principal component
0011 %   V       - Mx1 matrix of variances
0012 %   data (out) - mean subtracted data.
0013 
0014 %
0015 % From Jon Schlens PCA tutorial.
0016 
0017 [M, N] = size(data);
0018 
0019 % subtract off the mean for each dimension
0020 mn = mean(data,2);
0021 data = data- repmat(mn,1,N);
0022 
0023 % calculate the covariance matrix
0024 covariance = 1/(N-1)*data*data';
0025 
0026 if (isnan(covariance))
0027     covariance(:,:) = 0
0028 end
0029 
0030 % find the eigenvectors and eigenvalues
0031 [PC, V] = eig(covariance);
0032 
0033 % extract diagonal of matrix as vector
0034 V = diag(V);
0035 
0036 % sort the variances in decreasing order
0037 [junk, rindices] = sort(-1*V);
0038 V = V(rindices);
0039 PC = PC(:, rindices);
0040 
0041 % project the original data set
0042 signals = PC'*data;

Generated on Fri 28-Sep-2012 12:34:30 by m2html © 2005