资源简介
这是我找的第四种实现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
- 上一篇:航班订票系统
- 下一篇:机电传动控制机电传动控制机电传动控制试题
相关资源
- hmm(隐马尔可夫模型)算法代码汇总
- 语音识别代码
- 贝叶斯网络和HMM
- 基于HMM的手势识别
- 基于HMM的语音识别系统,自己的毕设
- 基于HMM的中文语音合成研究
- SVM和HMM混合模型的研究及其应用
- hmmer3.0_windows.zip
- HMM隐马尔可夫模型用于中文分词
- chmm.zip
- hmm的实现0-9数字的训练和识别
- HMM.sln
- 很详细的EM算法,GMM,HMM训练用
- hmm好多算法.
- HMM算法第五种实现代码
- HMM算法及其源码
- 隐马尔科夫模型HMM自学最好范例 pd
- 基于隐马尔可夫模型的语音识别算法
- 隐马尔科夫模型HMM的具体算法代码,
- 隐式马尔科夫与R语言
- The Application of Hidden Markov Models in Spe
- HMM学习范例教程(全集)
- message passing algorithmMessage Passing Algor
- 自然语言处理-HMM模型
- 基于HMM的动态手势识别
- HMM 自学教程
评论
共有 条评论