A few basic questions about a markov chain function

조회 수: 3 (최근 30일)
John
John 2012년 10월 13일
Hi there,
I'm using the code below to simulate a markov chain.
I have a basic question though about how to use it and I would be grateful if somebody could answer it. I have 2 questions:
1. How should the transition matrix be entered into the workspace
Like this (with the state names i.e State A)
A B C
A .2 .4. .4
P = B .1 .3 .6
C .2 .5 .3
or like this
.2 .4. .4
P = .1 .3 .6
.2 .5 .3
How would you call it in the command line?
Would this be it?
M=markvok(P,A,10);
Thank you
This function creates a Markov Chain based on a given transition matrix, P.
% It uses the current state to index a row of P. This row is passed into
% the Rand_Vect function, which returns a random value based on a probability
% vector. This value becomes the current state, and the process is repeated
% until the desired chain length is reached.
%
% Input:
% P - Stochastic probability matrix (must be square with rows that add to 1)
% initial_state - Initial state of the Markov Chain. This state corresponds
% to one of the rows of P.
% chain_length - Length of the output.
%
% Output:
% Chain - Vector containing randomly generated Markov Chain. The first value
% will be initial_state and it will have chain_length values.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [Chain] = Markvok_Chain( P, initial_state, chain_length )
sz = size(P);
cur_state = round(initial_state);
%
% Verify that the input parameters are valid
%
if (sz(1) ~= sz(2))
error('Markov_Chain: Probability matrix is not square');
end
num_states = sz(1);
if (cur_state < 1) | (cur_state > num_states)
error('Markov_Chain: Initial state not defined in P')
end
for i=1:num_states
if (sum(P(i,:)) ~=1 )
error('Markov_Chain: Transition matrix is not valid')
end
end
%
% Create the Markov Chain
%
Chain(1) = cur_state;
for i = 1:chain_length
cur_state = Rand_Vect(P(cur_state,:), 1);
Chain(i) = cur_state;
end

답변 (0개)

카테고리

Help CenterFile Exchange에서 Markov Chain Models에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by