-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMainBciWithMean.m
114 lines (92 loc) · 2.92 KB
/
MainBciWithMean.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
% close all;
clear;
addpath('../RiemannianTools');
addpath('../');
%% Load Data:
S1 = 7;
D1 = 2;
disp('Load Data');
[Events, vClass] = GetEvents(S1, D1);
% vClassIdx = ismember(vClass, [1, 2]);
% Events = Events(vClassIdx);
% vClass = vClass(vClassIdx);
Covs = CalcCovs(Events);
N = length(Events);
%% No OT
mX = CovsToVecs(cat(3, Covs{:}));
%%
mTSNE = tsne(mX')';
figure; scatter(mTSNE(1,:), mTSNE(2,:), 50, vClass, 'Fill', 'MarkerEdgeColor', 'k');
%% Mean
vIdx1 = vClass == 1;
vIdx2 = vClass == 2;
vIdx3 = vClass == 3;
vIdx4 = vClass == 4;
mEvents = cat(3, Events{:});
mMean1 = mean(mEvents(:,:,vIdx1), 3);
mMean2 = mean(mEvents(:,:,vIdx2), 3);
mMean3 = mean(mEvents(:,:,vIdx3), 3);
mMean4 = mean(mEvents(:,:,vIdx4), 3);
mAugEvents = cat(2, mEvents, repmat(mMean1, 1, 1, N), repmat(mMean2, 1, 1, N), repmat(mMean3, 1, 1, N), repmat(mMean4, 1, 1, N));
figure; hold on;
plot(mean(mMean1, 2), 'b', 'LineWidth', 2);
plot(mean(mMean2, 2), 'r', 'LineWidth', 2);
plot(mean(mMean3, 2), 'g', 'LineWidth', 2);
plot(mean(mMean4, 2), 'k', 'LineWidth', 2);
%%
CovsAug = CalcCovs( squeeze(num2cell(mAugEvents, [1, 2])) );
mAugX = CovsToVecs(cat(3, CovsAug{:}));
%%
mTSNE = tsne(mAugX')';
figure; scatter(mTSNE(1,:), mTSNE(2,:), 50, vClass, 'Fill', 'MarkerEdgeColor', 'k');
%%
mData1 = [mX;
vClass;];
mPCA = pca(mAugX, 'NumComponents', 288)';
mData2 = [mPCA;
vClass;];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
function Covs = CalcCovs(Events)
for ii = 1 : length(Events)
mX = Events{ii}';
Covs{ii} = cov(mX');
end
end
%%
function PlotData(mX, vClass, vS)
vMarker = 'od';
vColorS = 'br';
vColorC = 'gmyk';
vUniqueS = unique(vS);
%--
subplot(1,2,2);
for cc = 1 : 4
vIdxC = vClass == cc;
for ss = 1 : 2
marker = vMarker(ss);
vIdxS = vS == vUniqueS(ss);
color = vColorS(ss);
vIdx = vIdxS & vIdxC;
scatter(mX(1,vIdx), mX(2,vIdx), 50, color, marker, 'Fill', 'MarkerEdgeColor', 'k'); hold on;
end
end
h = legend({['Subject - ', num2str(vUniqueS(1))];
['Subject - ', num2str(vUniqueS(2))]}, ...
'FontSize', 12, 'Location', 'Best'); set(h, 'Color', 'None');
axis tight;
%--
subplot(1,2,1);
for ss = 1 : 2
marker = vMarker(ss);
vIdxS = vS == vUniqueS(ss);
for cc = 1 : 4
color = vColorC(cc);
vIdxC = vClass == cc;
vIdx = vIdxS & vIdxC;
scatter(mX(1,vIdx), mX(2,vIdx), 50, color, marker, 'Fill', 'MarkerEdgeColor', 'k'); hold on;
end
end
h = legend({'Left Hand', 'Right Hand', 'Foot', 'Tongue'}, 'FontSize', 12, 'Location', 'Best'); set(h, 'Color', 'None');
axis tight;
end