This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.


Hidden Markov model states and emissions


[seq,states] = hmmgenerate(len,TRANS,EMIS)


[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 symbols

  • A 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.


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.


 trans = [0.95,0.05;
 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,...

Introduced before R2006a