对于时间序列,有一个普遍的任务就是判断两个时间序列的相似程度。
DTW是在欧氏距离(欧几里得距离)计算的基础上,采用动态规划(DP)的思想,用满足一定条件的时间规整函数描述测试模板和参考模板的时间对饮关系,求解两个模板匹配时累计距离最小所对应的规整函数。DTW算法将自动缩放时间序列,使两个时间序列的形态尽可能的一致,常被用于孤立词语音识别、手势识别、信息检索、数据挖掘等。
以上摘自本人本科毕业论文的一段,写的花里胡哨。简单来讲就是计算出时间序列每一帧之间的欧氏距离,通过动态规划来找到一条使欧式距离和最小的一条路。
其中的欧式距离可以视实际应用进行修改。如语音中音波为一维,位置变化中为一维、二维、三维都可能有。
%%DTW算法的MATLAB实现
%DTW(Dynamic Time Warping):动态时间规整算法
%一种衡量两个时间序列之间的相似度的方法。
%主要应用在语音识别领域识别两段语音是否能表示同一个单词。
%函数名:dtw
%输入:t(向量,理论路径);r(向量,实际路径)
%输出:z(两个数据的相似度)
function z = dtw(t,r)
n = size(t,2);%n为向量t的长度
m = size(r,2);%m