dtw
使用动态时间失真的信号之间的距离。
库::`工程师`
语法
函数调用
-
[参数:dist],[参数:ix],[参数:iy]=dtw(<参数:x>>,[参数:y])— 拉伸两个向量[参数:x]和[参数:y]在一组共同的时间点上,[参数:区域],对应点之间的欧几里德距离之和最小。 要拉伸输入数据,功能dtw重复每个元素[参数:x]和[参数:y]所需的次数。 如果[参数:x]和[参数:y]-矩阵,然后[参数:区域]通过重复它们的列来拉伸它们。 在这种情况下[参数:x]和[参数:y]它们必须具有相同数量的行。 该函数还返回一组通用的时间点。[参数:ix]和[参数:iy],或失真路径,使之间的距离x(九)和y(iy)这是最少的。 向量资料[参数:ix]和[参数:iy]它们具有相同的长度。 它们中的每一个都包含一个单调递增的序列,其中相应信号的元素的索引[参数:x]或[参数:y]它们被重复所需的次数。 何时[参数:x]和[参数:y]是矩阵,[参数:ix]和[参数:iy]这样,x(:,ix)和y(:,iy)最低限度地分离。
-
_=dtw([参数:x],[参数:y],[参数:maxsamp])— 限制内的失真路径[参数:maxsamp]之间的线性近似的样本[参数:x]和[参数:y].
-
=dtw(,out=:plot)— 绘制原始信号和对齐信号。
争论
输入参数
# 公制 — 距离度量
+
"欧几里德" (默认情况下)| "绝对" | "平方" | "symmkl"
Details
设置为值之一的距离度量: "欧几里德", "绝对", "平方" 或 "symmkl". 如果 和 是 -测量信号,然后度量设置 -之间的距离 -m倒计时 和 -m倒计时 . 了解更多关于 请参阅动态时间转换。
-
"欧几里德"-差异平方和的根,也称为欧几里德度量或 : -
"绝对"-绝对差异的总和,也称为城市街区的距离,曼哈顿度量,出租车度量,或 : -
"平方"-欧几里德度量的平方,由差的平方和组成: -
"symmkl"-对称Kullback-Leibler度量。 此度量仅适用于实数和正数。 和 :
例子:
具有线性变化频率的正弦信号和正弦信号的动态时间转换
Details
让我们创建两个真实信号:一个频率线性变化的正弦曲线和一个正弦曲线。 我们使用动态时间变换来对齐信号,以便它们点之间的欧几里德距离之和最小。 我们将显示对齐的信号和距离。
import EngeeDSP.Functions: dtw
x = cos.(2 * pi * (3 * (1:1000) / 1000) .^ 2)
y = cos.(2 * pi * 9 * (1:399) / 400)
dtw(x,y, out=:plot)

改变正弦波的频率两次并重复计算。
import EngeeDSP.Functions: dtw
x=cos。(2*pi* (3 * (1:1000) / 1000) .^ 2)
y=cos。(2*pi* 18 * (1:399) / 400)
dtw(x,y,out=:plot)

此外
动态时间转换
Details
具有相同顺序排列的等效特征的两个信号可能由于其区段持续时间的差异而看起来完全不同。 动态时间变换以这样一种方式扭曲这些持续时间,即相应的特征出现在公共时间轴上的相同位置,从而强调信号之间的相似性。
考虑两个
和
其中包含 米制, 区划 伸展运动
最初,该函数对所有可能的值进行排序。
然后 区划 搜索通过由相同长度的两个序列参数化的晶格的路径, 九 和 我,我,这样
最小。
可接受的路径 区划 他们从
-
垂直行程:
; -
水平行程:
; -
对角移动:
.
这种结构确保任何可接受的路径对齐所有信号,不跳过采样,并且不重复信号特征。 此外,所需的路径运行接近之间绘制的对角线 马克斯桑普,确保失真比较相同长度的部分,并且不会超过异常值。
通过网格的可能路径:
不允许使用以下路径:
-
不对所有信号进行对齐:
-
跳过计数:
-
回头,重复元素: