/
dtw_testing.py
92 lines (86 loc) · 2.22 KB
/
dtw_testing.py
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
from dtw import dtw
from readData import readData, readAllData
from Preprocess import lowPassFilter
def valid(var,mean,DelVar = 0.001,DelMean = 0.5):
if var >= DelVar or abs(mean)>DelMean:
return True
return False
def merge(d,vars,means):
start = 0
flag = True
end = 0
newD = []
split = []
for i in xrange(len(vars)):
candidate = valid(vars[i],means[i])
if flag and candidate:
start = i
flag = False
elif (not flag) and candidate:
end = i+1
elif (not flag) and (not candidate):
if start<end:
print start,end
split.append([start,end])
flag = True
else:
continue
start = [0,0]
for p in split:
if start[1]+1 == p[0]:
start[1] = p[1]
else:
if start[1]-start[0]>5:
l = []
for i in range(start[0],start[1]):
l.extend(d[i][0])
newD.append(l)
start = p
if start[1]-start[0]>5:
l = []
for i in range(start[0],start[1]):
l.extend(d[i][0])
newD.append(l)
return newD
def isZero(p1,p2):
if p1>=0.0 and p2<=0.0:
return True
elif p1<=0.0 and p2>=0.0:
return True
return False
def splitData2(data,step = 200):
start = 0
end = 0
d = []
for i in xrange(len(data)-1):
if isZero(data[i],data[i+1]):
print start,end
if end -start >=step:
d.append(data[start:end])
start = end
else:
end = i
if end -start >=step:
d.append(data[start:end])
return d
data = readData("data/turn/Turn1.csv")
sf = lowPassFilter(data["AX"],0.02)
#d,vars,means = splitData(sf.tolist())
#newD = merge(d,vars,means)
#print len(newD)
#for line in newD:
# print len(line)
newD = splitData2(sf)
for line in newD:
print len(line)
data = readData("data/turn/Turn3.csv")
sf = lowPassFilter(data["AX"],0.02)
for line in splitData2(sf):
newD.append(line)
for line in newD:
sim = []
for line2 in newD:
dist, cost, path = dtw(line, line2)
sim.append(dist)
print sim
#Visualize(sf,newD)