-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexample2.m
93 lines (58 loc) · 2.23 KB
/
example2.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
%This file compares continuous EWMA variance and trajectory estimate with
%convergence from full data
%
%In the plot red indicates high variance, black low variance.
%
%INIT
clear;
load('exampledata.mat');
nrnodes = 40;
nriter = 5;
map = somdtw(stroke{1}, nrnodes);
map.wl = 90;
map.ewmal = 0.99;
lr = 0.1;
%Online calculation:
for i = 30:60 %Set i for determining the used training set, i = 89 max
%Plot
clf;
plot(stroke{i}(1,:), stroke{i}(2,:)), hold on
%scatter(map.nodes(1,:), map.nodes(2,:), 'b'), hold on;
for j = 1:(map.nrnodes-1)
varmax = max(map.segvar);
varmin = min(map.segvar);
vardelta = varmax-varmin;
%colour = [max(min( ((map.segvar(i)-varmin)/vardelta)^(1/2),1),0), -max(min(((map.segvar(i)-varmin)/vardelta)^(1/2), 1),0) + 1,0];
colour = [max(min( ((map.segvar(j)-varmin)/vardelta)^(1/2),1),0), 0,0];
thisplot = plot([map.nodes(1,j),map.nodes(1,j+1)], [map.nodes(2,j),map.nodes(2,j+1)]);
set(thisplot,'Color', colour, 'LineWidth',3);
end
axis([0, 0.5, -1.2, 0.8]);
pause(0.05);
map = map.add(stroke{i}); %Add stroke to SOM data set
%Update map a few iterations
for j = 1:nriter
map = map.adaptDTW(1);
map = map.adapt(20);
end
end
%Full convergence:
[map fullmean fullvar] = map.fullmean;
lr = 0.01; %Better precision for full variance
for j = 1:100
map = map.adaptDTW(5);
map = map.adapt(20);
end
%Code below is for plot
axis([0, 0.5, -1.2, 0.8]);
pause(0.05);
for i = 1:(map.nrnodes-1)
varmax = max(fullvar);
varmin = min(fullvar);
vardelta = varmax-varmin;
%colour = [max(min( ((map.segvar(i)-varmin)/vardelta)^(1/2),1),0), -max(min(((map.segvar(i)-varmin)/vardelta)^(1/2), 1),0) + 1,0];
colour = [max(min( ((fullvar(i)-varmin)/vardelta)^(1/2),1),0), 0,0];
thisplot = plot([map.nodes(1,i),map.nodes(1,i+1)], [map.nodes(2,i),map.nodes(2,i+1)]);
hold on;
set(thisplot,'Color', colour, 'LineWidth',3);
end