码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 将时间序列转成图像——马尔可夫转移场方法 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 方法

    马尔可夫转移场(Markov Transition Field, MTF)是基于马尔可夫转移矩阵的一种时间序列图像编码方法。该方法将时间序列的时间推移看成是一个马尔可夫过程,即:在已知目前状态的条件下,它未来的演变不依赖于它以往的演变,由此构造马尔可夫转移矩阵,进而拓展为马尔可夫转移场,实现图像编码。

    对于时间序列X=(xt,t=1,2,...,T)X=(xt,t=1,2,...,T)​,其图像编码步骤如下:

    1. 将时间序列X(t)X(t)​分成Q​个分位箱(标记为1,2,...,Q​,每个分位箱内的数据量相同);
    2. 将时间序列中每一个数据更改为其对应的分位箱的序号;
    3. 构造转移矩阵W​(ωij​表示分位箱i转移到分位箱j的频率):

      W=[ω11…ω1Qω21⋯ω2Q⋮⋱⋮ωQ1⋯ωQQ] s.t. ∑jωij=1​

    4. 构造马尔可夫转移场M​:

      M=[ωij∣x1∈qi,x1ϵqj…ωij∣x1∈qi,xN∈qjωij∣x2∈qi,x1ϵqj⋯ωij∣x2∈qi,xN∈qj⋮⋱⋮ωij∣xNϵqi,x1ϵqj⋯ωij∣xN∈qi,xN∈qj]​

    2 Matlab代码实现

    1. clc
    2. clear
    3. close all
    4. %% 生成数据
    5. % speed = xlsread('3_1_link6_28_5_30min.csv');
    6. speed = xlsread('3_1_link1_1_5_30min.csv');
    7. X = speed;
    8. m = length(X);
    9. %数据初始化[0,1]
    10. X = (X - min(X))/(max(X) - min(X));
    11. %% 构造转移矩阵W
    12. N = length(X);
    13. % 分出Q个分位箱(按照个数),从小往大:1、2、3、4
    14. Q = 4;
    15. % X_Q把每个元素标记为分为箱1、2、3、4,
    16. X_Q = ones(1,N);
    17. j = 0;
    18. % 初始化k
    19. k = ones(1,Q+1);
    20. for i = 2 : Q+1
    21. % 循环计算小于j的数据个数,达到阈值时跳出循环
    22. while( sum(X < j) < N * (i-1) / Q)
    23. j = j + 0.0001;
    24. end
    25. % 记录每一个分位箱的阈值
    26. k(i) = j;
    27. % 将原先的数据向量变成对应的分位箱次序向量
    28. X_Q(find(X < k(i) & X > k(i-1))) = i-1;
    29. end
    30. %% 计算马尔可夫矩阵
    31. sum_14 = 0;
    32. sum_13 = 0;
    33. sum_24 = 0;
    34. sum_12 = 0;
    35. sum_23 = 0;
    36. sum_34 = 0;
    37. sum_11 = 0;
    38. sum_22 = 0;
    39. sum_33 = 0;
    40. sum_44 = 0;
    41. sum_21 = 0;
    42. sum_32 = 0;
    43. sum_43 = 0;
    44. sum_31 = 0;
    45. sum_42 = 0;
    46. sum_41 = 0;
    47. for i = 1:N-1
    48. switch(X_Q(i) - X_Q(i+1))
    49. case -3
    50. sum_14 = sum_14 + 1;
    51. case -2
    52. switch(X_Q(i))
    53. case 1
    54. sum_13 = sum_13 + 1;
    55. case 2
    56. sum_24 = sum_24 +1;
    57. end
    58. case -1
    59. switch(X_Q(i))
    60. case 1
    61. sum_12 = sum_12 + 1;
    62. case 2
    63. sum_23 = sum_23 + 1;
    64. case 3
    65. sum_34 = sum_34 + 1;
    66. end
    67. case 0
    68. switch(X_Q(i))
    69. case 1
    70. sum_11 = sum_11 + 1;
    71. case 2
    72. sum_22 = sum_22 + 1;
    73. case 3
    74. sum_33 = sum_33 + 1;
    75. case 4
    76. sum_44 = sum_44 + 1;
    77. end
    78. case 1
    79. switch(X_Q(i))
    80. case 2
    81. sum_21 = sum_21 + 1;
    82. case 3
    83. sum_32 = sum_32 + 1;
    84. case 4
    85. sum_43 = sum_43 + 1;
    86. end
    87. case 2
    88. switch(X_Q(i))
    89. case 3
    90. sum_31 = sum_31 + 1;
    91. case 4
    92. sum_42 = sum_42 + 1;
    93. end
    94. case 3
    95. sum_41 = sum_41 + 1;
    96. end
    97. end
    98. W = [sum_11 sum_12 sum_13 sum_14;
    99. sum_21 sum_22 sum_23 sum_24;
    100. sum_31 sum_32 sum_33 sum_34;
    101. sum_41 sum_42 sum_43 sum_44];
    102. W = W./repmat(sum(W),[4,1])
    103. M = zeros(N,N);
    104. for i = 1: N
    105. for j = 1:N
    106. M(i,j) = W(X_Q(i),X_Q(j));
    107. end
    108. end
    109. figure(1)
    110. plot(X)
    111. hold on
    112. for i = 2 : Q
    113. plot(1:N,ones(1,N)*k(i),'linewidth',1.5);
    114. hold on;
    115. end
    116. im = figure(2);
    117. imagesc(M)
    118. saveas(im,'MTF_1.bmp');
    119. saveas(figure(1),'MTF_01.bmp');

    3 结果

    ​

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

  • 相关阅读:
    简单的个人博客网站设计 静态HTML个人博客主页 DW个人网站模板下载 大学生简单个人网页作品代码 个人网页制作 学生个人网页设计作业
    应用配置管理,基础原理分析
    机器学习的集成方法(bagging、boosting)
    用 Python 实现微信推送消息
    Java网络编程
    贪心算法|45.跳跃游戏II
    如何使用 ABAP 创建包含不同字体大小的 Word 文档
    你安全吗?丨点击“不明链接”后果是什么你知道吗?
    知识产权维权全流程
    【面试普通人VS高手系列】讲一下wait和notify这个为什么要在synchronized代码块中?
  • 原文地址:https://blog.csdn.net/weixin_41406486/article/details/127815523
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号