• 大小: 8KB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2024-02-01
  • 语言: 其他
  • 标签: HMM  

资源简介

这是我找的第四种实现HMM算法的代码,希望对你有所帮助

资源截图

代码片段和文件信息

/*
@abstract(test for the tutorial on hidden Markov models )
@author(Nikolai Shokhirev  
        http://www.shokhirev.com/nikolai.html
        http://www.u.arizona.edu/~nikolai/
        http://www.chem.arizona.edu/~shokhirn/nikolai.html )
@created(2006.02.02)
㎞ikolai V. Shokhirev 2003-2006
 2006.02.24 - added PosteriorDecodingIdxs
*/
//---------------------------------------------------------------------------

#include 
#pragma hdrstop

#include “fHMM.h“
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource “*.dfm“
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(Tobject *Sender)
{
  int N = 2;
  int M = 3;
  int K = 3;
/*
 http://en.wikipedia.org/wiki/Viterbi_algorithm
states = (‘Rainy‘ ‘Sunny‘)
observations = (‘walk‘ ‘shop‘ ‘clean‘)

start_probability = {‘Rainy‘: 0.6 ‘Sunny‘: 0.4}

transition_probability = {
   ‘Rainy‘ : {‘Rainy‘: 0.7 ‘Sunny‘: 0.3}
   ‘Sunny‘ : {‘Rainy‘: 0.4 ‘Sunny‘: 0.6}
   }

emission_probability = {
   ‘Rainy‘ : {‘walk‘: 0.1 ‘shop‘: 0.4 ‘clean‘: 0.5}
   ‘Sunny‘ : {‘walk‘: 0.6 ‘shop‘: 0.3 ‘clean‘: 0.1}
   }
*/
  FArr1D P0(N);
  P0(1) = 0.6;
  P0(2) = 0.4;

  FArr2D A(NN);
  A(11) = 0.7; A(12) = 0.3;
  A(21) = 0.4; A(22) = 0.6;

  FArr2D B(NM);
  B(11) = 0.1; B(12) = 0.4; B(13) = 0.5;
  B(21) = 0.6; B(22) = 0.3; B(23) = 0.1;

  // (‘walk‘ ‘shop‘ ‘clean‘)
  IArr1D Idxs(K);
  Idxs(1) = 1; Idxs(2) = 2; Idxs(3) = 3;

  HMM * hmm = new HMM(A B P0);
  Label1->Caption = “Forward: “+FloatToStr(hmm->GetProbabilityF(Idxs));
  Label2->Caption = “Backward: “+FloatToStr(hmm->GetProbabilityB(Idxs));

  IArr1D S = hmm->ViterbiStateIdxs(Idxs);
  AnsiString ss = “Viterbi States: “;
  for (int i = S.L1(); i <= S.H1(); i++)
    ss += IntToStr(S(i)) +““;
  Label3->Caption = ss;
  //Output:  (“Sunny“ “Rainy“ “Rainy“)

  S = hmm->PosteriorDecodingIdxs(Idxs);
  ss = “Posterior States: “;
  for (int i = S.L1(); i <= S.H1(); i++)
    ss += IntToStr(S(i)) +““;
  Label5->Caption = ss;

  delete hmm;

}
//---------------------------------------------------------------------------


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2484  2006-03-15 15:42  HMMcpp\fHMM.cpp

     文件       2410  2006-03-15 15:06  HMMcpp\fHMM.dfm

     文件       1431  2006-03-15 15:43  HMMcpp\fHMM.h

     文件       4131  2006-03-15 15:43  HMMcpp\HMM.cpp

     文件       1131  2006-03-15 15:43  HMMcpp\HMM.h

     文件       4049  2006-03-15 13:50  HMMcpp\TestHMM.bpr

     文件       1056  2006-03-04 18:42  HMMcpp\TestHMM.cpp

     文件       4178  2006-03-15 16:15  HMMcpp\TestHMM.dsk

     文件        876  2006-03-04 18:17  HMMcpp\TestHMM.res

     目录          0  2006-03-15 16:21  HMMcpp

 -rw-r--r--       227  2011-08-12 15:27  readme_verysource.com.txt

----------- ---------  ---------- -----  ----

                21973                    11


评论

共有 条评论