天天看點

Dynamic Time Warping 動态時間規整算法python實作

找的參考文章給的代碼有點問題,調整了一下。具體原理就不贅述了,可參考這篇,實際使用也可以使用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()