将时间序列转成图像——马尔可夫转移场方法 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=(x_t,t=1,2,...,T)​,其图像编码步骤如下:

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

    W=\left[\begin{array}{ccc} \omega_{11} & \ldots & \omega_{1 Q} \\ \omega_{21} & \cdots & \omega_{2 Q} \\ \vdots & \ddots & \vdots \\ \omega_{Q 1} & \cdots & \omega_{Q Q} \end{array}\right] \quad \text { s.t. } \quad \sum_{j} \omega_{i j}=1

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

    M=\left[\begin{array}{ccc} \omega_{i j} \mid x_{1} \in q_{i}, x_{1} \epsilon q_{j} & \ldots & \omega_{i j} \mid x_{1} \in q_{i}, x_{N} \in q_{j} \\ \omega_{i j} \mid x_{2} \in q_{i}, x_{1} \epsilon q_{j} & \cdots & \omega_{i j} \mid x_{2} \in q_{i}, x_{N} \in q_{j} \\ \vdots & \ddots & \vdots \\ \omega_{i j} \mid x_{N} \epsilon q_{i}, x_{1} \epsilon q_{j} & \cdots & \omega_{i j} \mid x_{N} \in q_{i}, x_{N} \in q_{j} \end{array}\right]

2 Matlab代码实现

clc
clear
close all


%% 生成数据
% speed = xlsread('3_1_link6_28_5_30min.csv');
speed = xlsread('3_1_link1_1_5_30min.csv');

X = speed;
m = length(X);

%数据初始化[0,1]
X = (X - min(X))/(max(X) - min(X));

%% 构造转移矩阵W
N = length(X);

% 分出Q个分位箱(按照个数),从小往大:1、2、3、4
Q = 4;

% X_Q把每个元素标记为分为箱1、2、3、4,
X_Q = ones(1,N);
j = 0;

% 初始化k
k = ones(1,Q+1);
for i = 2 : Q+1
    
    % 循环计算小于j的数据个数,达到阈值时跳出循环
    while( sum(X < j) < N * (i-1) / Q)
        j = j + 0.0001;
    end
    
    % 记录每一个分位箱的阈值
    k(i) = j;
    
    % 将原先的数据向量变成对应的分位箱次序向量
    X_Q(find(X < k(i) & X > k(i-1))) = i-1;
end

%% 计算马尔可夫矩阵
sum_14 = 0;
sum_13 = 0;
sum_24 = 0;
sum_12 = 0;
sum_23 = 0;
sum_34 = 0;
sum_11 = 0;
sum_22 = 0;
sum_33 = 0;
sum_44 = 0;
sum_21 = 0;
sum_32 = 0;
sum_43 = 0;
sum_31 = 0;
sum_42 = 0;
sum_41 = 0;

for i = 1:N-1
    switch(X_Q(i) - X_Q(i+1))
        case -3
            sum_14 = sum_14 + 1;
        case -2
            switch(X_Q(i))
                case 1
                    sum_13 = sum_13 + 1;
                case 2
                    sum_24 = sum_24 +1;
            end
        case -1
            switch(X_Q(i))
                case 1
                    sum_12 = sum_12 + 1;
                case 2
                    sum_23 = sum_23 + 1;
                case 3
                    sum_34 = sum_34 + 1;
            end
        case 0
            switch(X_Q(i))
                case 1
                    sum_11 = sum_11 + 1;
                case 2
                    sum_22 = sum_22 + 1;
                case 3
                    sum_33 = sum_33 + 1;
                case 4 
                    sum_44 = sum_44 + 1;
            end
        case 1
            switch(X_Q(i))
                case 2
                    sum_21 = sum_21 + 1;
                case 3
                    sum_32 = sum_32 + 1;
                case 4
                    sum_43 = sum_43 + 1;
            end
        case 2
            switch(X_Q(i))
                case 3
                    sum_31 = sum_31 + 1;
                case 4
                    sum_42 = sum_42 + 1;
            end
        case 3
            sum_41 = sum_41 + 1;
    end
end

W = [sum_11 sum_12 sum_13 sum_14;
    sum_21 sum_22 sum_23 sum_24;
    sum_31 sum_32 sum_33 sum_34;
    sum_41 sum_42 sum_43 sum_44];
W = W./repmat(sum(W),[4,1])

M = zeros(N,N);
for i = 1: N
    for j = 1:N
        M(i,j) = W(X_Q(i),X_Q(j));
    end
end

figure(1)
plot(X)
hold on
for i = 2 : Q
    plot(1:N,ones(1,N)*k(i),'linewidth',1.5);
    hold on;
end
im = figure(2);
imagesc(M)
saveas(im,'MTF_1.bmp');
saveas(figure(1),'MTF_01.bmp');

3 结果

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

  • 26
    点赞
  • 114
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论
马尔可夫转移(Markov Transition Field, MTF)是一种基于马尔可夫转移矩阵的时间序列图像编码方法。它将时间序列的时间推移看作是一个马尔可夫过程,即未来的演变只依赖于当前状态,不受过去演变的影响。通过构造马尔可夫转移矩阵,可以将时间序列转化为马尔可夫转移,从而实现图像编码。 在Matlab中,可以使用相对位置矩阵方法时间序列转换为图像。这种方法可以通过Matlab代码来实现,并且非常适合新手和有经验的开发人员学习和借鉴。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [将时间序列转成图像——马尔可夫转移方法 Matlab实现](https://blog.csdn.net/weixin_41406486/article/details/127815523)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [自写MATLAB实现马尔可夫决策程序源码](https://download.csdn.net/download/qq_40957277/87538539)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vm-1215

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值