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

📄 main.cpp

📁 HMM模型的C语言实现
💻 CPP
字号:

/******************************************************************************
**函数名称:BaumWelch
**功能:BaumWelch算法
**参数:phmm:HMM模型指针
**      T:观察序列长度
**      O:观察序列
**      alpha,beta,gamma,pniter均为中间变量
**      plogprobinit:初始概率
**      plogprobfinal最终概率
**/ 
/*	void BaumWelch(HMM *phmm, int T, int *O, double **alpha, double **beta,
	double **gamma, int *pniter, 
	double *plogprobinit, double *plogprobfinal)*/
#include"iostream.h"
#include"stdio.h"
#include"hmm.h"
#include"nrutil.h"
#include"STDAFX.h"
#include"math.h"
int main()
{
	HMM *phmm;
	phmm=new HMM;

	int N=10;
	int M=20;
	int seed=10;
	int i,j,k;
	int T=M; 
			
	InitHMM( phmm, N, M, seed);


	printf("A=\n");
	for(i=1;i <= phmm->N; i++)
	{
		for(j=1;j<=phmm->N;j++)
		{
			printf("%f\t",phmm->A[i][j]);
		}
		printf("\n");
	}

	printf("B=\n");
	for(j=1;j<=phmm->N;j++)
	{
		for(k=1;k<=phmm->M;k++)
		{
			printf("%f\t",phmm->B[j][k]);
		}
		printf("\n");
	}

	printf("pi=\n");
		for(i=1;i<=phmm->N;i++)
		{
			printf("pi[i]=0.1\t");      //输出初始概率值
		}

	printf("\n");
/**/

	int *O;
	O=ivector(1,T);
	double **al;
    al=(double **) dmatrix(0, M,0, N);


/*	for(i=0;i<=M;i++)
	{
		for(j=0;j<=N;j++)
		{
			printf("%f\t",al[i][j]);
		}
		printf("\n");
	}
n
*/
//	int a;
	double **be;
	be=(double **) dmatrix(1, M,1, N);
	double **ga;
	ga=(double **) dmatrix(1, M,1, N);
	int pniter[5]={0};
	double plogprobinit;
//	plogprobinit=0.5;
	double plogprobfinal;
	BaumWelch(phmm, T, O, al, be,ga,pniter, &plogprobinit, &plogprobfinal);
	
//	double pow(double x,double y)
	cout<<plogprobfinal<<"\n"<<endl;
	//printf("%f\n",plogprobfinal);

	for(i=1;i<T+1;i++)
		cout<<O[i]<<" ";
	plogprobfinal=pow(10,plogprobfinal);
//	a=pow(10,0);
//	printf("%f\t",plogprobfinal);
	return 0;
}

⌨️ 快捷键说明

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