그래서 마르코프 체인의 경우 상태 전환에만 관심이 있다고 가정합니다. 모든 상태 전이를 단일 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
전이 행렬을 설정하려면, 당신은 여기에 나열된 조언을, 그리고 전환의 모든 행 셀 수 :
http://www.mathworks.it/matlabcentral/answers/75009-i-ve-a-matrix-of-6x4-and-i-want-to-count-the-rows-how-many-times-it-occur-in-a-matrix
[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
은 하나 이상의 벡터가있을 때 유효합니다. – galtor