|
1 | 1 | function [E,C,Corr] = reduce(D,pars) |
2 | 2 | % CCAREDUCE Internal function for CCA |
3 | 3 |
|
4 | | - % Agglomerate all of the conditions, and perform PCA |
| 4 | + % Agglomerate all of the conditions, and perform mCCA |
5 | 5 | E_ = cell(1,pars.nArea); |
6 | 6 | C = cell(size(D)); |
7 | 7 | Corr = cell(size(D)); |
|
19 | 19 | [A,B,Corr,E_{1},E_{2}] = canoncorr(D{:}); |
20 | 20 | C = {A(:,1:dims),B(:,1:dims)}; |
21 | 21 | else |
22 | | - data = cat(1,D{:})'; |
| 22 | + data = arrayfun(@(Aidx)cat(2,D{:,Aidx}),1:size(D,2),'UniformOutput',false); |
23 | 23 | d = cellfun(@(x)size(x,1),D); |
24 | | - [~,Corr,C] = embedding.CCA.mcca(data,d); |
| 24 | + [~,Corr,C] = embedding.CCA.mcca(cat(1,data{:})',d); |
| 25 | + E_ = cellfun(@(d,c) c * d,data,C,'UniformOutput',false); |
25 | 26 | end |
26 | 27 |
|
27 | 28 | % [U,V] = checkFlip(D{:},C{:},endLeg_range, interest_range); |
28 | 29 |
|
29 | 30 | % For each condition, store the reduced version of each data vector |
30 | 31 | E = cell(pars.nTrial,pars.nArea); |
31 | | - for ii = 1:pars.nTrial |
| 32 | + for jj = 1:pars.nArea |
32 | 33 | index = 0; |
33 | | - for jj = 1:pars.nArea |
| 34 | + for ii = 1:pars.nTrial |
34 | 35 | E{ii,jj} = E_{jj}(index + (1:pars.TrialL),1:dims)'; |
35 | 36 | index = index + pars.TrialL; |
36 | 37 | end |
|
0 commit comments