DTW:Dynamic Time Warping,动态时间规整

2023-10-07 03:30

本文主要是介绍DTW:Dynamic Time Warping,动态时间规整,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       DTW 起源于语音识别领域,目的是衡量两个长度不同的序列相似性(similarity),并计算两个序列之间的最佳匹配

       对于 两个长度相同的序列,其相似性可以通过一种很直接的方式衡量 —— 依次计算两个序列中各个点之间的距离,最后进行加和。

        例1 :将两个序列中的点根据点在序列中的位置一一对应,即 A(1)与B(1),A(2)与B(2),... ,A(i)与B(i),... ,A(6)与B(6)相对应。

        Similarity(A, B) = |A(1)-B(1)|+|A(2)-B(2)|+ ... + |A(6)-B(6)|。

        例2 :允许一个序列的点 可以与 另一个序列的多个点 对应。比如下图中,A(1)与B(1),A(2)与B(1),A(3)与B(2),A(4)与B(2)A(5)与B(3)、A(5)与B(4),A(6)与B(5)、A(6)与B(6)相对应。

        Similarity(A, B) = |A(1)-B(1)| + |A(2)-B(1)| + |A(3)-B(2)| + |A(4)-B(2)| + |A(5)-B(3)| + |A(5)-B(4)| + |A(6)-B(5)| + |A(6)-B(6)|。

时间规整(Time Warping):允许 一个序列中某个点 与 另一个序列中的多个连续点 相对应。

距离矩阵法

        下图用一个矩阵 M,更直观地描述 A 和 B 两个序列之间的距离。横轴表示点在A中的位置,纵轴表示点在B中的位置,格点值 M(i, j) 为两个点之间的距离。

        灰色虚线为 例1 所述方法,根据位置相同原则对应序列中的元素,正好是矩阵的对角线。黄格红线为 例2 。

        DTW 的目标即为找到一条最短的路径。路径上的格点值之和为路径长度。DTW 的计算步骤为:① 计算两个序列中各点之间的距离矩阵 M ;② 寻找一条从矩阵的左上角到右下角的格点值之和最小的路径。

        距离矩阵 M 中,从左上角到右下角的路径,具有以下性质:

① 当前路径长度 = 上一步的路径长度 + 当前格点值

② 路径上的某个格点,它的上一个格点只可能是其 左、上、左上 的某个格点。

        综上所述,可以使用 递归算法 求解 最短路径长度。

代价矩阵法

        用一个矩阵 N 表示序列 A 和 B 的 cost(可以理解为两个序列之间的差异),矩阵的格点 N(i, j) 表示子序列 Ai 和 Bj 之间的cost。最小cost也可以通过递归算法求解,递推规则为:

         代价矩阵法的具体算法如上表所示。首先,分别对矩阵的第一行和第一列初始化;然后,从左到右、从上到下,计算矩阵中剩下的元素。整个矩阵都计算完毕后,矩阵的右下角格点值即为这两个序列之间的最小cost

 

这篇关于DTW:Dynamic Time Warping,动态时间规整的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/155762

相关文章

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

动态规划---打家劫舍

题目: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 思路: 动态规划五部曲: 1.确定dp数组及含义 dp数组是一维数组,dp[i]代表

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

批处理以当前时间为文件名创建文件

批处理以当前时间为文件名创建文件 批处理创建空文件 有时候,需要创建以当前时间命名的文件,手动输入当然可以,但是有更省心的方法吗? 假设我是 windows 操作系统,打开命令行。 输入以下命令试试: echo %date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%_%time:~3,2%_%time:~6,2% 输出类似: 2019_06

【MRI基础】TR 和 TE 时间概念

重复时间 (TR) 磁共振成像 (MRI) 中的 TR(重复时间,repetition time)是施加于同一切片的连续脉冲序列之间的时间间隔。具体而言,TR 是施加一个 RF(射频)脉冲与施加下一个 RF 脉冲之间的持续时间。TR 以毫秒 (ms) 为单位,主要控制后续脉冲之前的纵向弛豫程度(T1 弛豫),使其成为显著影响 MRI 中的图像对比度和信号特性的重要参数。 回声时间 (TE)

linux 下Time_wait过多问题解决

转自:http://blog.csdn.net/jaylong35/article/details/6605077 问题起因: 自己开发了一个服务器和客户端,通过短连接的方式来进行通讯,由于过于频繁的创建连接,导致系统连接数量被占用,不能及时释放。看了一下18888,当时吓到了。 现象: 1、外部机器不能正常连接SSH 2、内向外不能够正常的ping通过,域名也不能正常解析。

LeetCode:64. 最大正方形 动态规划 时间复杂度O(nm)

64. 最大正方形 题目链接 题目描述 给定一个由 0 和 1 组成的二维矩阵,找出只包含 1 的最大正方形,并返回其面积。 示例1: 输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4 示例2: 输入: 0 1 1 0 01 1 1 1 11 1 1 1 11 1 1 1 1输出: 9 解题思路 这道题的思路是使用动态规划

O(n)时间内对[0..n^-1]之间的n个数排序

题目 如何在O(n)时间内,对0到n^2-1之间的n个整数进行排序 思路 把整数转换为n进制再排序,每个数有两位,每位的取值范围是[0..n-1],再进行基数排序 代码 #include <iostream>#include <cmath>using namespace std;int n, radix, length_A, digit = 2;void Print(int *A,