hmmgenerate
Hidden Markov model states and emissions
Syntax
[seq,states] = hmmgenerate(len,TRANS,EMIS)
hmmgenerate(...,'Symbols',SYMBOLS)
hmmgenerate(...,'Statenames',STATENAMES)
Description
[seq,states] = hmmgenerate(len,TRANS,EMIS)
takes
a known Markov model, specified by transition probability matrix TRANS
and
emission probability matrix EMIS
, and uses it to
generate
A random sequence
seq
of emission symbolsA random sequence
states
of states
The length of both seq
and states
is len
. TRANS(i,j)
is
the probability of transition from state i
to state j
. EMIS(k,l)
is
the probability that symbol l
is emitted from state k
.
Note
The function hmmgenerate
begins with the
model in state 1 at step 0, prior to the first emission. The model
then makes a transition to state i1, with probability T1i1,
and generates an emission ak1 with
probability Ei1k11. hmmgenerate
returns
i1 as the first entry of states
,
and ak1 as
the first entry of seq
.
hmmgenerate(...,'Symbols',SYMBOLS)
specifies the symbols that are
emitted. SYMBOLS
can be specified as a numeric array, a string array,
or a cell array of character vectors. The default symbols are integers
1
through N
, where N
is the
number of possible emissions.
hmmgenerate(...,'Statenames',STATENAMES)
specifies the names of the
states. STATENAMES
can be specified as a numeric array, a string
array, or a cell array of character vectors. The default state names are
1
through M
, where M
is the
number of states.
Since the model always begins at state 1, whose transition probabilities
are in the first row of TRANS
, in the following
example, the first entry of the output states
is
be 1 with probability 0.95 and 2 with probability 0.05.
Examples
trans = [0.95,0.05; 0.10,0.90]; emis = [1/6 1/6 1/6 1/6 1/6 1/6; 1/10 1/10 1/10 1/10 1/10 1/2]; [seq,states] = hmmgenerate(100,trans,emis) [seq,states] = hmmgenerate(100,trans,emis,... 'Symbols',{'one','two','three','four','five','six'},... 'Statenames',{'fair';'loaded'})
Version History
Introduced before R2006a