Dynamic Time Warping 动态时间规整算法
来源:互联网 发布:吃饭前拍照知乎 编辑:程序博客网 时间:2024/06/05 07:37
Dynamic Time Warping(DTW)是一种衡量两个时间序列之间的相似度的方法,主要应用在语音识别领域来识别两段语音是否表示同一个单词。
1. DTW方法原理
在时间序列中,需要比较相似性的两段时间序列的长度可能并不相等,在语音识别领域表现为不同人的语速不同。而且同一个单词内的不同音素的发音速度也不同,比如有的人会把“A”这个音拖得很长,或者把“i”发的很短。另外,不同时间序列可能仅仅存在时间轴上的位移,亦即在还原位移的情况下,两个时间序列是一致的。在这些复杂情况下,使用传统的欧几里得距离无法有效地求的两个时间序列之间的距离(或者相似性)。
DTW通过把时间序列进行延伸和缩短,来计算两个时间序列性之间的相似性:
如上图所示,上下两条实线代表两个时间序列,时间序列之间的虚线代表两个时间序列之间的相似的点。DTW使用所有这些相似点之间的距离的和,称之为归整路径距离(Warp Path Distance)来衡量两个时间序列之间的相似性。
2. DTW计算方法:
令要计算相似度的两个时间序列为X和Y,长度分别为|X|和|Y|。
归整路径(Warp Path)
归整路径的形式为W=w1,w2,...,wK,其中Max(|X|,|Y|)<=K<=|X|+|Y|。
wk的形式为(i,j),其中i表示的是X中的i坐标,j表示的是Y中的j坐标。
归整路径W必须从w1=(1,1)开始,到wK=(|X|,|Y|)结尾,以保证X和Y中的每个坐标都在W中出现。
另外,W中w(i,j)的i和j必须是单调增加的,以保证图1中的虚线不会相交,所谓单调增加是指:
最后要得到的归整路径是距离最短的一个归整路径:
最后求得的归整路径距离为D(|X|,|Y|),使用动态规划来进行求解:
上图为代价矩阵(Cost Matrix) D,D(i,j)表示长度为i和j的两个时间序列之间的归整路径距离。
3. DTW实现:
matlab代码:
function dist = dtw(t,r)n = size(t,1);m = size(r,1);% 帧匹配距离矩阵d = zeros(n,m);for i = 1:n for j = 1:m d(i,j) = sum((t(i,:)-r(j,:)).^2); endend% 累积距离矩阵D = ones(n,m) * realmax;D(1,1) = d(1,1);% 动态规划for i = 2:n for j = 1:m D1 = D(i-1,j); if j>1 D2 = D(i-1,j-1); else D2 = realmax; end if j>2 D3 = D(i-1,j-2); else D3 = realmax; end D(i,j) = d(i,j) + min([D1,D2,D3]); endenddist = D(n,m);
C++实现:
dtwrecoge.h
dtwrecoge.cpp
C++代码下载:DTW算法.rar
出处:http://www.cnblogs.com/luxiaoxun/
- 动态时间规整算法(dynamic time warping)
- Dynamic Time Warping 动态时间规整算法
- Dynamic Time Warping 动态时间规整算法
- Dynamic Time Warping 动态时间规整算法
- Dynamic Time Warping 动态时间规整算法
- Dynamic Time Warping 动态时间规整算法
- Dynamic Time Warping 动态时间规整算法
- Dynamic time warping 动态时间规整算法(DTW)
- Dynamic Time Warping(DTW—— 动态时间规整算法
- Dynamic Time Warping(DTW)动态时间规整算法
- 动态时间规整(Dynamic Time Warping)
- 动态时间归整/规整/弯曲(Dynamic time warping,DTW)
- 【重大修改】动态时间规整(Dynamic Time Warping)
- Dynamic Time Warping 动态时间规整算法
- DTW(Dynamic Time Warping,动态时间归整)的介绍
- DTW(Dynamic Time Warping / 动态时间归整) python实现
- DTW(Dynamic Time Warping,动态时间归整)的介绍
- DTW(Dynamic Time Warping,动态时间归整)
- Linux chmod命令详解
- Java Web学习(33): 阶段小项目使用MVC模型实现购物车效果
- 关于一个简易的新闻应用的感悟
- js 中input 控制输入
- 开篇有益,与诸君共勉
- Dynamic Time Warping 动态时间规整算法
- 大数相除算法
- ToggleButton 点击更换图片的方法
- Socket,IP,端口,TCP,UDP
- ※ Leetcode - Dynamic Programming - 119. Pascal's Triangle II(倒叙滚动数组求解杨辉三角第k行)
- ToggleButton按钮
- hdu 4549 M斐波那契数列
- KMP算法
- (NYoj 325 zb的生日 和 456 邮票分你一半) 两个一样的题目不同的处理方法。(注意看题目中参数的较小值)