0001 function features = makeSVDProj(trials,CV,command)
0002
0003
0004
0005
0006
0007
0008
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