目录
【若觉文章质量良好且有用,请别忘了点赞收藏加关注,这将是我继续分享的动力,万分感谢!】
其他:
1. 时间序列转二维图像方法及其应用研究综述_vm-1215的博客-CSDN博客
2.将时间序列转成图像——格拉姆角场方法 Matlab实现_vm-1215的博客-CSDN博客
3.将时间序列转成图像——马尔可夫转移场方法 Matlab实现_vm-1215的博客-CSDN博客
4.将时间序列转成图像——递归图方法 Matlab实现_vm-1215的博客-CSDN博客
5.将时间序列转成图像——相对位置矩阵方法 Matlab实现_vm-1215的博客-CSDN博客
1 方法
时间序列图形表达了时间序列的时间结构信息,基于时间序列图形的序列熵则可以用于时间序列的复杂性测量、动态系统表征等。因此,作者提出了基于不同图形长度的图形差分场,实现时间序列到图像的转换。
图形差分场(Motif Difference Field, MDF)的基本思想是:给定一个时间序列,设定需要得到的图像数量,再设定不同步长,不同长度的时间窗口,以此多次提取时间序列原始图形的某一段,然后经过组合变换获得个图像。具体的流程如下:
- 根据时间序列,得到图形集:
其中,相当于一个时间窗口,相当于步长(时移),相当于移动窗口(有个时刻点),相当于移动窗口(有个时刻点),共有个图形; - 得到图形差分集: 其中,共有个图形;
- 定义新序列,通过补零操作使得序列长度一致:
-
定义图形差分场:
代表步长对应的个序列集,这样图形差分场可以生成对应的个通道图像。
- 针对第i个通道,定义图像数组为: 其中。
- 针对第i个通道,定义图像数组为: 其中。
- 填补中的零元素,定义MDF图像的每一个通道: 其中,是由旋转而来,为哈达玛积[15]。
最终实现时间序列到图像的转换。
2 Matlab代码实现
function MDF(n)
%% 生成数据
speed = xlsread('3_1_link6_28_5_30min.csv');
% speed = xlsread('3_1_link1_1_5_30min.csv');
X = speed;
X = (X - min(X)) / (max(X) - min(X));
m = length(X);
%% 生成图
%%%%%%%%%%% MDF %%%%%%%%%%%%%%
% 参数
% n = 4; % 图数量
% 根据设置的图数量,循环生成
% 根据图数量,生成窗口步长序列 1: dMax
dMax = floor((m-1)/(n-1));
% 循环生成图集和差分图集
for d = 1 : dMax
s = 1:m - (n-1)*d;
for j = 1:n
M(:,d,j) = zeros(m-n+1,1);
M(1:length(s),d,j) = X(s+(j-1)*d);
if j > 1
% 生成差分图集
dM(:,d,j-1) = M(:,d,j) - M(:,d,j-1);
K(:,d,j-1) = ones(m-n+1,1);
K(1:length(s),d,j-1) = 0;
end
end
end
% 生成图形差分场
MDF = dM;
G = MDF;
IMG = G + K.*rot90(rot90(G));
%% 显示图(热力图)
for i = 1:n-1
im(i) = figure(i);
imagesc(IMG(:,:,i))
title(['第',num2str(i),'幅图']);
% saveas(im(i),['MDF_1(n=',num2str(n),')第',num2str(i),'张图.bmp']);
end
figure(n)
plot(speed)
title('time data')
xlabel('t')
ylabel('speed')
3 结果
【若觉文章质量良好且有用,请别忘了点赞收藏加关注,这将是我继续分享的动力,万分感谢!】