⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chmm.h

📁 简单明了的HMM-GMM-KEAMS调用接口
💻 H
字号:
/***************************************************************************

Module Name:

	Continuous Observation Hidden Markov Model with Gaussian Mixture

History: 

	2003/12/13	Fei Wang

***************************************************************************/


#pragma once
#include <vector>
#include "GMM.h"


class CHMM
{
public:
	CHMM(int stateNum = 1, int dimNum = 1, int mixNum = 1);
	~CHMM();

	int GetStateNum()	{ return m_stateNum; }
	int GetMaxIterNum()		{ return m_maxIterNum; }
	double GetEndError()	{ return m_endError; }

	void SetMaxIterNum(int n)	{ m_maxIterNum = n; }
	void SetEndError(double e)	{ m_endError = e; }

	GMM* GetStateModel(int i);
	double GetStateInit(int i);
	double GetStateFinal(int i);
	double GetStateTrans(int i, int j);

	void Zero();
	void Norm();

	double GetProbability(std::vector<double*>& seq);
	double GetProbability_LHJ(std::vector<double*>& seq,std::vector<int>& state);
	double Decode(std::vector<double*>& seq, std::vector<int>& state);
	double Decode_LHJ(std::vector<double*>& seq, std::vector<int>& state);

	double GetProbability2(std::vector<double*>& seq,std::vector<int> seq_state);
	double Decode_LHJ2(std::vector<double*>& seq, std::vector<int>& state,std::vector<int> seq_state);


	/*	SampleFile: <size><dim><seq_size><seq_data>...<seq_size>...
	*/
	void Train(const char* sampleFileName,int VALIDATING);
	void Init(const char* sampleFileName,int VALIDATING);
	double getTransProb(int i,int j);

	friend std::ostream& operator<<(std::ostream& out, CHMM& hmm);
	friend std::istream& operator>>(std::istream& in, CHMM& hmm);
    // 将特征数据文件转化为二进制文本文件
	void TextTransform(CString InputText, CString OutputBinaryText);
private:
	int m_stateNum;
	GMM** m_stateModel;
	double* m_stateInit;
	double** m_stateTran;

	int m_maxIterNum;		// The stopping criterion regarding the number of iterations
	double m_endError;		// The stopping criterion regarding the error

	void Allocate(int state, int dim = 1, int mix = 1);
	void Dispose();

	double LogProb(double p);
	void DumpSampleFile(const char* fileName);
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -