找的參考文章給的代碼有點問題,調整了一下。具體原理就不贅述了,可參考這篇,實際使用也可以使用python的
fastdtw
包。
import sys
def distance(x,y):
return abs(x-y)
def dtw():
X = [, , , ]
Y = [, , , , ]
M = [[distance(X[i], Y[i]) for i in range(len(X))] \
for j in range(len(Y))]
# print(M)
l1 = len(X)
l2 = len(Y)
D = [[ for i in range(l1 + )] for i in range(l2 + )]
# D[0][0] = 0
for i in range(, l1 + ):
D[][i] = sys.maxsize
for j in range(, l2 + ):
D[j][] = sys.maxsize
for j in range(, l2 + ):
for i in range(, l1 + ):
D[j][i] = distance(X[i -],Y[j- ])+ \
min(D[j - ][i], D[j][i - ], D[j - ][i - ])
print(j,i,D[j][i])
print(D)
if __name__ == '__main__':
dtw()