动态时间规整可视化(matlab实现)

本文介绍了动态时间规整(DTW)算法,一种用于比较具有时间延迟和变化的时间序列相似性的方法,包括Matlab代码示例。作者展示了如何使用DTW进行一维时间序列的对齐和路径寻找。文中还引用了相关学术研究作为参考。
摘要由CSDN通过智能技术生成

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

💥1 概述

动态时间规整(Dynamic Time Warping,DTW)是一种用于比较两个时间序列之间相似性的方法,特别适用于时间序列在时间轴上存在一定的变化和延迟的情况。

📚2 运行结果

部分代码:

%% 一维时间序列dtw相似性算法
% method1, dtw函数绘制对齐,最优路径等
x = cos(2*pi*(3*(1:1000)/1000).^2);
y = cos(2*pi*9*(1:399)/400);
dtw(x,y)
[dist1,idx1,idy1] = dtw(x,y);
figure('Name','origin dtw_path');
plot(idx1,idy1,'LineWidth',2);
set(gca,'YDir','reverse');

% method2,手写函数
[X,Y] = meshgrid(x,y);
distD = abs(X-Y);
figure('Name','dtw_path'); 
axD = axes('Position',[0.3 0.1,0.6 0.6]);
axX = axes('Position',[0.3 0.75 0.6 0.2]);
axY = axes('Position',[0.1 0.1 0.15 0.6]);
imagesc(axD,distD)
hold(axD,'on');
dist2 = 0;
idx2=1;
idy2 =1;
pt = [idx2,idy2];% [x,y]形式坐标
endpt =[length(x),length(y)];
while ~all(pt==endpt)
    rpt = [idx2(end)+1,idy2(end)];
    dpt = [idx2(end),idy2(end)+1];
    rdpt = [idx2(end)+1,idy2(end)+1];
    pts = [rpt;dpt;rdpt];
    pts(:,1) = min(pts(:,1),length(x));
    pts(:,2) = min(pts(:,2),length(y));
    rpt = pts(1,:);
    dpt = pts(2,:);
    rdpt = pts(3,:);
    values = [distD(rpt(2),rpt(1));
        distD(dpt(2),dpt(1));
        distD(rdpt(2),rdpt(1))];
    [minv,idx] = min(values);
    nextPt =pts(idx,:);
    if sum(all(pts==endpt,2))>=2 % 最后的边界
        nextPt =endpt;
        minv = abs(x(nextPt(1))-y(nextPt(2)));
    end
    dist2 = dist2+minv;
    idx2 = [idx2,nextPt(1)];
    idy2 = [idy2,nextPt(2)];
    pt = nextPt;

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]孟正. 基于时序聚类与复杂网络的股票分类体系构建[D].哈尔滨工业大学,2022.DOI:10.27061/d.cnki.ghgdu.2020.005121.

[2]钟国彬,沈佳妮,徐凯琪等.基于动态时间规整和多维标度策略的串联锂离子电池组异常电池可视化识别方法[J].储能科学与技术,2019,8(01):180-190.

[3]李志鹏. 基于连续框架的脑纤维聚类可视化研究[D].浙江工业大学,2019.

🌈4 Matlab代码实现

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
动态时间规整算法(DTW)是一种用于时间序列比较和匹配的方法,它可以有效地找到两个不同时间序列之间的最佳对齐。在MATLAB中,可以使用以下步骤实现DTW算法: 1. 准备数据:首先,准备两个需要比较的时间序列,可以表示为两个向量或矩阵。这些时间序列可以代表任何连续的测量值,例如声音、时间序列数据或运动轨迹。 2. 计算距离度量:选择合适的距离度量方法来评估两个时间序列之间的相似性。一种常用的方法是欧几里得距离(Euclidean distance),但也可以使用其他距离度量方法,如曼哈顿距离(Manhattan distance)或相关系数。 3. 创建距离矩阵:计算并创建一个距离矩阵,其中的元素表示两个时间序列在每个时刻点上的距离。可以使用循环或矩阵操作来计算并填充距离矩阵。 4. 动态规划过程:使用动态规划的思想来寻找两个时间序列之间的最佳对齐路径。这一步骤可以使用递归或者迭代的方法实现。 5. 回溯最佳路径:根据计算得到的动态规划矩阵,回溯最佳路径,以确定两个时间序列之间的最佳对齐方式。 6. 计算距离度量:根据最佳路径和距离矩阵,计算两个时间序列之间的最小距离,该距离可以用来衡量它们的相似性。 MATLAB中有一些函数和工具箱可以用来实现上述步骤,例如pdist函数用于计算距离度量,distmat函数可以用来创建距离矩阵。此外,MATLAB还提供了一些帮助函数和示例代码,以便用户更方便地使用DTW算法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值