# 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 i_{1}, with probability *T _{1i1}*,
and generates an emission

*a*with probability

_{k1}*E*.

_{i1k11}`hmmgenerate`

returns
i_{1}as the first entry of

`states`

,
and *a*as the first entry of

_{k1}`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**