状态转移矩阵 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
總結
以上是生活随笔為你收集整理的状态转移矩阵 matlab,用不同状态序列长度估计MATLAB中的马尔可夫链转移矩阵的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 古代野兽 Ancient Beast:优
- 下一篇: 数学建模--转移矩阵