当前位置:   article > 正文

将时间序列转成图像——图形差分场方法 Matlab实现

图形差分场

目录

1 方法

2 Matlab代码实现

3 结果


【若觉文章质量良好且有用,请别忘了点赞收藏加关注,这将是我继续分享的动力,万分感谢!】

其他:

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)的基本思想是:给定一个时间序列X=(xt,t=1,2,...,N),设定需要得到的图像数量n(1<n<N),再设定不同步长d(1ddmax,dmax=[(N1)/(n1)]),不同长度s(s=1,2,3,...,N(n1)d)的时间窗口,以此多次提取时间序列原始图形的某一段,然后经过组合变换获得n个图像。具体的流程如下:

  1. 根据时间序列X,得到图形集:
        

    Mdn={Md,sn,s=1,2,3,,T(n1)d}

    其中Md,sn=(xt,t=s,s+d,s+2d,,s+(n1)d)s相当于一个时间窗口,d相当于步长(时移),t相当于移动窗口(有n个时刻点),t相当于移动窗口(有n个时刻点),共有n×dmax个图形;
  2. 得到图形差分集:

    dMdn={dMd,sn,s=1,2,3,,T(n1)d}

    其中dMd,sn=(xs+dxs,xs+2dxs+d,,xs+(n1)dxs+(n2)d),共有(n1)×dmax个图形;
  3. 定义新序列Id,sn,通过补零操作使得序列长度一致:

    Id,sn={dMd,sn,1sN(n1)d0,N(n1)d<sN(n1)

  4. 定义图形差分场:

    MDFn={I1n,I2n,,Idmaxn}

    Idn代表步长d对应的(n1)个序列集,这样图形差分场可以生成对应的n1个通道图像。

  5. 针对第i个通道,定义图像数组为:

    Gin=[I1n(i),I2n(i),,Idn(i),Idmaxn(i)]N

    其中Idn(i)=[Id,1n(i),Id,2n(i),,Id,Tn+1n(i)]N,1in1
  6. 针对第i个通道,定义图像数组为:

    Gin=[I1n(i),I2n(i),,Idn(i),Idmaxn(i)]N

    其中Idn(i)=[Id,1n(i),Id,2n(i),,Id,Tn+1n(i)]N,1in1
  7. 填补Gin中的零元素,定义MDF图像的每一个通道:

    IMGin=Gin+KnGin

    其中Kd,sn={0,1sN(n1)d1,N(n1)d<sN(n1)Gin是由Gin旋转而来,为哈达玛积[15]。

 最终实现时间序列到图像的转换。

2 Matlab代码实现

  1. function MDF(n)
  2. %% 生成数据
  3. speed = xlsread('3_1_link6_28_5_30min.csv');
  4. % speed = xlsread('3_1_link1_1_5_30min.csv');
  5. X = speed;
  6. X = (X - min(X)) / (max(X) - min(X));
  7. m = length(X);
  8. %% 生成图
  9. %%%%%%%%%%% MDF %%%%%%%%%%%%%%
  10. % 参数
  11. % n = 4; % 图数量
  12. % 根据设置的图数量,循环生成
  13. % 根据图数量,生成窗口步长序列 1: dMax
  14. dMax = floor((m-1)/(n-1));
  15. % 循环生成图集和差分图集
  16. for d = 1 : dMax
  17. s = 1:m - (n-1)*d;
  18. for j = 1:n
  19. M(:,d,j) = zeros(m-n+1,1);
  20. M(1:length(s),d,j) = X(s+(j-1)*d);
  21. if j > 1
  22. % 生成差分图集
  23. dM(:,d,j-1) = M(:,d,j) - M(:,d,j-1);
  24. K(:,d,j-1) = ones(m-n+1,1);
  25. K(1:length(s),d,j-1) = 0;
  26. end
  27. end
  28. end
  29. % 生成图形差分场
  30. MDF = dM;
  31. G = MDF;
  32. IMG = G + K.*rot90(rot90(G));
  33. %% 显示图(热力图)
  34. for i = 1:n-1
  35. im(i) = figure(i);
  36. imagesc(IMG(:,:,i))
  37. title(['第',num2str(i),'幅图']);
  38. % saveas(im(i),['MDF_1(n=',num2str(n),')第',num2str(i),'张图.bmp']);
  39. end
  40. figure(n)
  41. plot(speed)
  42. title('time data')
  43. xlabel('t')
  44. ylabel('speed')

3 结果

【若觉文章质量良好且有用,请别忘了点赞收藏加关注,这将是我继续分享的动力,万分感谢!】

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/284616?site
推荐阅读
相关标签
  

闽ICP备14008679号