Main Content

hmmgenerate

隠れマルコフ モデルの状態と出力

構文

[seq,states] = hmmgenerate(len,TRANS,EMIS)
hmmgenerate(...,'Symbols',SYMBOLS)
hmmgenerate(...,'Statenames',STATENAMES)

説明

[seq,states] = hmmgenerate(len,TRANS,EMIS) は、遷移確率行列 TRANS および出力確率行列 EMIS によって指定された既知のマルコフ モデルを使用して、以下を生成します。

  • ランダムな出力シンボル系列 seq

  • ランダムな状態系列 states

seqstates の長さは、いずれも len です。TRANS(i,j) は、状態 i から状態 j までの遷移確率です。EMIS(k,l) は、シンボル l が状態 k から出力される確率です。

メモ:

関数 hmmgenerate は、最初の出力の前の、ステップ 0 で状態 1 にあるモデルから開始します。モデルは、その後、確率 T1i1 で状態 i1 に遷移し、確率 Ei1k11 で出力 ak1 を生成します。hmmgenerate は、states の最初のエントリとして i1 を、seq の最初のエントリとして ak1 をそれぞれ返します。

hmmgenerate(...,'Symbols',SYMBOLS) は、出力されるシンボルを指定します。SYMBOLS には、数値配列、string 配列、または文字ベクトルの cell 配列を指定できます。既定の設定のシンボルは、1N の整数です。ここで、N は、可能な出力数です。

hmmgenerate(...,'Statenames',STATENAMES) は、状態の名前を指定します。STATENAMES には、数値配列、string 配列、または文字ベクトルの cell 配列を指定できます。既定の設定の状態名は、1M です。ここで、M は、状態の数です。

モデルは、遷移確率が TRANS の最初の行にある状態 1 から常に開始するため、次の例の出力 states の最初のエントリは、確率 0.95 で 1 と確率 0.05 で 2 になります。

 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'})

バージョン履歴

R2006a より前に導入