💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
💥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.
本文介绍了动态时间规整(DTW)算法,一种用于比较具有时间延迟和变化的时间序列相似性的方法,包括Matlab代码示例。作者展示了如何使用DTW进行一维时间序列的对齐和路径寻找。文中还引用了相关学术研究作为参考。
&spm=1001.2101.3001.5002&articleId=135730084&d=1&t=3&u=9a6870ef0163477e879f1178b8db5497)
628

被折叠的 条评论
为什么被折叠?



