dtw

使用动态时间弯曲距离信号

描述

例子

经销= dtw (x,y)延伸两个向量,xy,到一组通用的瞬间经销,对应点之间的欧几里得距离的总和,是最小的。的输入,dtw重复的每个元素xy根据需要多次。如果xy矩阵,那么经销他们通过重复列。在这种情况下,xy必须有相同数量的行。

例子

(经销,第九,iy)= dtw (x,y)返回组常见的瞬间,或扭曲的路径,这样x(第九),y(iy)尽可能最小的经销他们之间。

向量第九iy有相同的长度。每个包含一个单调递增序列的索引的元素相应的信号,xy必要的重复次数。

xy矩阵,第九iy是这样的,x(第九:)yiy (:,)最低限度是分离。

例子

(___)= dtw (x,y,maxsamp)限制在扭曲的路径maxsamp样品之间的直线匹配xy。这个语法返回输出参数的任何以前的语法。

例子

(___)= dtw (___,度规)指定的距离度量使用除了任何输入参数在以前的语法。

例子

dtw (___)没有输出参数块原始的和一致的信号。

  • 如果是真实的信号向量,这个函数显示了两个原始信号在一个次要情节和下面一个次要情节中的对齐信号第一个。

  • 如果是复杂的信号向量,这个函数显示原始的和一致的信号在三维图。

  • 如果是真实的信号矩阵,函数使用显示亮度图像显示原始的和一致的信号。

  • 如果是复杂的信号矩阵,功能块他们在顶部和底部的实部和虚部每个图像的一半。

例子

全部折叠

生成两个真正的信号:唧唧,正弦信号。

x = cos(2 *π* (3 * (1:1000)/ 1000)^ 2);y = cos(2 *π* 9 * (1:399)/ 400);

使用动态时间扭曲对齐的信号,这样他们点之间的欧几里得距离之和最小。显示信号和距离保持一致。

dtw (x, y);

改变其初始值正弦信号频率的两倍。重复计算。

y = cos(2 *π* 18 * (1:399)/ 400);dtw (x, y);

添加一个虚部信号。恢复初始正弦信号的频率。使用动态时间扭曲使信号通过最小化平方欧氏距离的总和。

我x = exp(2 *π* (3 * (1:1000)/ 1000)^ 2);y = exp(我*π* 9 * 2 (1:399)/ 400);dtw (x, y,“方”);

设计一个字体,类似于早期的计算机的输出。用它来编写MATLAB®这个词。

装备= @ (x) dec2bin (x ') -48;M =科([34 54 42 34 34]);=科([08年20 34 62 34]);T =科([62 08年08年08年08年08年08年]);L =科([32 32 32 32 32 32 62]);B =科([60 34 60 60 34]);MATLAB = (M T L B);

腐败这个词重复随机字母和列间距不同。显示原词和三个损坏的版本。重置的随机数字生成器可重复的结果。

rng (“默认”)c = @ (x) x(:,排序([1:6兰迪(6,1,3))));次要情节(4,1,1,“XLim”,60[0])间谍(MATLAB)包含()ylabel (“原始”)kj = 2:4次要情节(kj 4 1,“XLim”,60[0])间谍([c (M) c (A) c (T) (L) c c (A) (B)))包含()ylabel (“腐败”)结束

生成两个损坏的版本的词。使他们使用动态时间扭曲。

一个= [c (M) c (A) c (T) (L) c c (A) (B));两个= [c (M) c (A) c (T) c (L) c c (A) (B));[ds,第九,iy] = dtw (1、2);onewarp = 1 (:, ix);twowarp = 2 (:, iy);

显示未对齐,对齐的话。

图次要情节(4 1 1)间谍(一)包含()ylabel (“一个”次要情节(4,1,2)间谍(两个,“r”)包含()ylabel (“两个”)次要情节(4 1 3)间谍(onewarp)包含()ylabel (“onewarp”)次要情节(4,4)间谍(twowarp,“r”)包含()ylabel (“twowarp”)

重复的计算使用内置的功能dtw

dtw (1、2);

生成两个不同的山峰组成的两个信号分离不同长度的山谷。画出信号。

x1 = [0 1 0 0 0 0 0 0 0 0 0 1 0] * .95;x2 = [0 1 0 1 0] * .95;次要情节(2,1,1)情节(x1) xl = xlim;次要情节(2,1,2)情节(x2) xlim (xl)

使信号与扭曲的路径上没有限制。产生精确对准,函数需要重复只有一个短信号的样本。

图dtw (x1, x2);

情节弯曲路径和直线两个信号之间的配合。为了实现对齐,山峰之间的功能扩展槽慷慨。

[d, i1、i2] = dtw (x1, x2);图绘制(i1、i2“啊——”,(i1 (1) i1(结束)],[i2 (1) i2(结束)])

重复计算,但现在约束翘曲最多三个元素偏离直线路径。绘制拉伸和弯曲路径的信号。

(直流、i1c i2c) = dtw (x1, x2, 3);次要情节(2,1,1)情节((x1 (i1c); x2 (i2c)”,“。”)标题(的距离:num2str (dc)])次要情节(2,1,2)情节(i1c、i2c、“啊——”,(i1 (1) i1(结束)],[i2 (1) i2(结束)])

约束翘曲无法过多集中在一小部分样品,以牺牲对齐质量。用一个示例约束重复计算。

dtw (x1, x2, 1);

加载一个语音信号在采样 F 年代 = 7 4 1 8 H z 。文件包含一个记录一个女声说“MATLAB®。”这个词

负载mtlb%,类型soundsc (mtlb Fs)

提取两个部分相对应的两个实例/æ/音素。第一个发生大约150毫秒到250毫秒,而第二个370毫秒到450毫秒之间。画出两个波形。

a1 = mtlb(圆(0.15 * Fs):圆形(0.25 * Fs));a2 = mtlb(圆(0.37 * Fs):圆形(0.45 * Fs));次要情节(2,1,1)情节((0:元素个数(a1) 1) / Fs + 0.15, a1)标题(“a_1”次要情节(2,1,2)情节((0:元素个数(a2) 1) / Fs + 0.37, a2)标题(“a₂”)包含(的时间(秒))

%,类型soundsc (a1, Fs),暂停(1),soundsc (a2, Fs)

扭曲的时间轴,这样信号之间的欧几里得距离最小化。计算共享的“持续时间”扭曲的信号和阴谋。

[d, i1、i2] = dtw (a1, a2);a1w = a1 (i1);a2w = a2 (i2);t =(0:元素个数(i1) 1) / Fs;时间= t(结束)
时间= 0.1297
次要情节(2,1,1)情节(t, a1w)标题(“a_1,扭曲”次要情节(2,1,2)情节(t, a2w)标题(,扭曲的)包含(的时间(秒))

%,类型soundsc (a1w Fs),暂停(1)、声音(a2w Fs)

重复实验用一个完整的词。加载一个文件包含单词“强大”,说一个女人和一个男人。在8 kHz信号采样。

负载(“strong.mat”)%,类型soundsc(她,fs),暂停(2),soundsc(他,fs)

扭曲的时间轴,这样信号间的绝对距离最小化。绘制原始和转换信号。计算其共享扭曲的“持续时间”。

dtw(她,他,“绝对”);传奇(“她”,“他”)

[d, ih ihim] = dtw(她,他,“绝对”);时间=元素个数(ih) / fs
时间= 0.8394
%,类型soundsc(她(ih), fs),暂停(2),soundsc(他(ihim), fs)

的文件MATLAB1.gifMATLAB2.gif包含两个手写样本“MATLAB®。”Load the files and align them along thex设在使用动态时间扭曲。

samp1 =“MATLAB1.gif”;samp2 =“MATLAB2.gif”;双(x = imread (samp1));y =双(imread (samp2));dtw (x, y);

输入参数

全部折叠

输入信号,指定为一个真正的或复杂的向量或矩阵。

数据类型:|
复数的支持:金宝app是的

输入信号,指定为一个真正的或复杂的向量或矩阵。

数据类型:|
复数的支持:金宝app是的

宽度调整窗口中,指定为一个正整数。

数据类型:|

距离度量,指定为“欧几里得”,“绝对”,“方”,或“symmkl”。如果XY都是K维信号,然后度规规定d(X,Y)之间的距离th的样本Xnth的样本Y。看到动态时间扭曲更多信息d(X,Y)。

  • “欧几里得”——根笔平方差异,也称为欧几里得或2度量:

    d n ( X , Y ) = k = 1 K ( x k , y k , n ) * ( x k , y k , n )

  • “绝对”——绝对差异,也被称为曼哈顿街区,出租车,或者1度量:

    d n ( X , Y ) = k = 1 K | x k , y k , n | = k = 1 K ( x k , y k , n ) * ( x k , y k , n )

  • “方”欧几里得度量的平方,平方的总和组成的差异:

    d n ( X , Y ) = k = 1 K ( x k , y k , n ) * ( x k , y k , n )

  • “symmkl”——对称Kullback-Leibler度量。这个指标是有效的只有真正的和积极的XY:

    d n ( X , Y ) = k = 1 K ( x k , y k , n ) ( 日志 x k , 日志 y k , n )

输出参数

全部折叠

信号之间的最小距离,作为一个积极的返回真正的标量。

为第一信号,弯曲路径返回向量或矩阵的指数。

弯曲路径第二信号,返回向量或矩阵的指数。

更多关于

全部折叠

动态时间扭曲

两个信号等效特性安排在相同的顺序可以出现不同的由于时间的差异部分。动态时间弯曲扭曲这些时间对应的特征出现在相同的位置在一个共同的时间轴,从而突出信号之间的相似性。

考虑这两个K维信号

X = ( x 1 , 1 x 1 , 2 x 1 , x 2 , 1 x 2 , 2 x 2 , x K , 1 x K , 2 x K , ]

Y = ( y 1 , 1 y 1 , 2 y 1 , N y 2 , 1 y 2 , 2 y 2 , N y K , 1 y K , 2 y K , N ] ,

哪有N样本,分别。鉴于d(X,Y)之间的距离th的样本Xnth的样本Y中指定的度规,经销延伸XY上一组通用的瞬间,一个全球signal-to-signal距离测量是最小的。

最初,安排的所有可能值的函数d(X,Y)转换为点阵的形式

然后经销寻找一条通过lattice-parameterized两个序列的长度相同,第九iy比如,

d = 第九 n iy d n ( X , Y )

是最低的。可接受的经销路径开始d11(X,Y),在d(X,Y),是“国际象棋王”动作的组合:

  • 垂直移动:(,n)→(+ 1,n)

  • 水平移动:(,n)→(,n+ 1)

  • 对角线移动:(,n)→(+ 1,n+ 1)

这种结构确保任何可接受的路径将完整的信号,不跳过样品,不重复信号特性。此外,一个理想的路径运行之间的对角线长d11(X,Y),d(X,Y)。这种额外的限制,调整的maxsamp参数,确保了翘曲比较部分相似的长度和不overfit异常特征。

这是一个可能的路径通过晶格:

以下路径是不允许:

不使整个信号 跳过样品 回头,重复功能

引用

[1]Paliwal K·K。,Anant Agarwal, and Sarvajit S. Sinha. "A Modification over Sakoe and Chiba’s Dynamic Time Warping Algorithm for Isolated Word Recognition."信号处理。4卷,1982年,页329 - 333。

[2]Sakoe、总裁中西宏明和Seibi千叶。“动态编程算法优化口语识别。”IEEE®交易在声学、演讲和信号处理。ASSP-26卷,No . 1, 1978, pp。43-49。

扩展功能

C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。

介绍了R2016a