Home > . > makeSVDProj.m

makeSVDProj

PURPOSE ^

%% features = makeSVDModes(trials,CV)

SYNOPSIS ^

function features = makeSVDProj(trials,CV,command)

DESCRIPTION ^

%%  features = makeSVDModes(trials,CV)
%%   trials: ntasks x ntrials cell array of data
%%   CV.parms contains
%%           .nlags
%%           .winSize
%%           .winShift
%%   features: ntasks x ntrials cell array of featurized data

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function features = makeSVDProj(trials,CV,command)
0002 %%%  features = makeSVDModes(trials,CV)
0003 %%%   trials: ntasks x ntrials cell array of data
0004 %%%   CV.parms contains
0005 %%%           .nlags
0006 %%%           .winSize
0007 %%%           .winShift
0008 %%%   features: ntasks x ntrials cell array of featurized data
0009 
0010 if nargin > 2 && strcmp(command,'make')
0011   lagged = lagize(trials,CV.parms.nlags);
0012   allData = [];
0013   [r,c] = size(trials);
0014   for ri = 1:r
0015     for ci = 1:c
0016       allData = [allData lagged{ri,ci}];
0017     end
0018   end
0019 
0020   if CV.parms.meanSubtract
0021     means = mean(allData,2);
0022     allData = allData - repmat(means,1,size(allData,2));
0023     CV.parms.means = means;
0024   else
0025     CV.parms.means = [];
0026   end    
0027 
0028   [u,s] = svd(allData);
0029   CV.parms.basis = u;
0030 
0031   features = CV;
0032 
0033 else
0034 
0035   nlags = CV.parms.nlags;
0036   basis = CV.parms.basis;
0037   lagged = lagize(trials,nlags);
0038   
0039   [r,c] = size(trials);
0040   for ri = 1:r
0041     for ci = 1:c
0042       if CV.parms.meanSubtract
0043     d = lagged{ri,ci} - repmat(CV.parms.means,1,size(lagged{ri,ci},2));
0044       else
0045     d = lagged{ri,ci};
0046       end
0047       features{ri,ci} = basis' * d;
0048     end
0049   end
0050 
0051 end

Generated on Tue 07-Feb-2006 12:02:57 by m2html © 2003