状态转移矩阵 matlab,用不同状态序列长度估计MATLAB中的马尔可夫链转移矩阵

所以对于马尔可夫链,我假设你只对状态转换感兴趣.您可以将所有状态转换分组为单个Nx2矩阵,然后计算行出现的次数.

对于这个例子,我使用三个长度为4,3和3的观察.我可以使用cellfun以下列方式将所有状态转换组合在一个矩阵中:

obs = cell(1, 3);

obs(1) = {[1 2 3 4]};

obs(2) = {[4 5 6]};

obs(3) = {[3 4 5]};

transitions = cellfun(@(x)([x(1:length(x)-1); x(2:length(x))]), obs, 'UniformOutput', false);

alltransitions = cell2mat(transitions)';

这给了我观察到的转变(1-> 2,2-> 3,3-> 4 ……):

alltransitions =

1 2

2 3

3 4

4 5

5 6

3 4

4 5

要设置转换矩阵,您可以获取此处列出的建议,并计算所有转换的行数:

[uniqueTransitions, ~, i]=unique(alltransitions,'rows','stable');

v=arrayfun(@(x) sum(i==x),1:size(uniqueTransitions,1))';

p = v/sum(v);

我的向量p包含我的转移概率,因此我可以继续构建稀疏矩阵

transitionMatrix = sparse(uniqueTransitions(:,1), uniqueTransitions(:,2), p, 6,6)

这导致:

transitionMatrix =

(1,2) 0.1429

(2,3) 0.1429

(3,4) 0.2857

(4,5) 0.2857

(5,6) 0.1429

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值