0001 function features = makeMSFProj(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] = mnf2(allData);
0029 u = s';
0030 CV.parms.basis = u;
0031
0032 features = CV;
0033
0034 else
0035
0036 nlags = CV.parms.nlags;
0037 basis = CV.parms.basis;
0038 lagged = lagize(trials,nlags);
0039
0040 [r,c] = size(trials);
0041 for ri = 1:r
0042 for ci = 1:c
0043 if CV.parms.meanSubtract
0044 d = lagged{ri,ci} - repmat(CV.parms.means,1,size(lagged{ri,ci},2));
0045 else
0046 d = lagged{ri,ci};
0047 end
0048 features{ri,ci} = basis' * d;
0049 end
0050 end
0051
0052 end