之前已經介紹過了DTW算法,現在根據文章 toward accurate dynamic time warping in linear time and space,以及別人實現的fastdtw代碼分析fast-DTW算法。參考博客:http://www.cnblogs.com/kemaswill/archive/2013/04/18/3029078.html 簡單講講fast-DTW,該算法最主要有兩個部分,第一個是約束
def__expand_window(path, len_x, len_y, radius):path_ = set(path)for i, j in path:for a, b in ((i + a, j + b)for a in xrange(-radius, radius+1)for b in xrange(-radius, radius+1)):path_.add((a, b))window_ = set()for i, j in path_:for a, b in ((i * 2, j * 2), (i * 2, j * 2 + 1),(i * 2 + 1, j * 2), (i * 2 + 1, j * 2 + 1)):window_.add((a, b))window = []start_j = 0for i in xrange(0, len_x):new_start_j = Nonefor j in xrange(start_j, len_y):if (i, j) in window_:window.append((i, j))if new_start_j isNone:new_start_j = jelif new_start_j isnotNone:breakstart_j = new_start_jreturn window