💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
💥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.