📄 main.cpp
字号:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include<iostream.h>
#include<fstream.h>
#include<iomanip.h>
#define NUM_MIX 4 /*the number of mixtures in the random function*/
#define DIM_FEAT 13 /*维数*/
#define FIRST 0
struct GMM {
float C[NUM_MIX];
double mV[NUM_MIX][DIM_FEAT];
double Sigma[NUM_MIX][DIM_FEAT];
double SigmaMult[NUM_MIX];
};
struct HMM
{
GMM gmm[3];//3个状态,每个状态都为一个高斯分布
char phone_name;//对于某个phone的
};
HMM hmm[27];//27 个phone
double x[10][DIM_FEAT];
//初始化GMM模型
void initialize()
{
double SigmaMultiple;
int *p = NULL;
for(int i=0;i<NUM_MIX;i++)
{
SigmaMultiple = 1.0;
gmm.C[i]=1/NUM_MIX;//权重设定相等
for(int j=0;j<DIM_FEAT;j++)
{
SigmaMultiple *=gmm.Sigma[i][j]*gmm.Sigma[i][j];
}
gmm.SigmaMult[i]=SigmaMultiple;
}
}
//计算Zk列表
double *z_table()
{
double *z = new double;
for(int i=0;i<NUM_MIX;i++)
{
z[i]=gmm.C[i]/(pow(2*3.14,DIM_FEAT/2)*gmm.SigmaMult[i]);
}
return z;
}
//计算第DMAX
double DMAX(double *z_t)
{
double D_result;
double Sum=0;
for(int i=0;i<DIM_FEAT;i++)
{
Sum+=(x[FIRST][i]-gmm.mV[FIRST][i])*(x[FIRST][i]-gmm.mV[FIRST][i])/(gmm.Sigma[FIRST][i]*gmm.Sigma[FIRST][i]);
}
D_result=log(z_t[FIRST]) - 0.5*Sum;
return D_result;
}
//PDE算法
double PDE(double *z_t)
{
double d_max=DMAX(z_t);
double d_tmp;
for(int i=1;i<NUM_MIX;i++)
{
double sum = 0;
for(int k=0;k<DIM_FEAT;k++)
{
sum+=(x[2][k]-gmm.mV[i][k])*(x[2][k]-gmm.mV[i][k])/(gmm.Sigma[i][k]*gmm.Sigma[i][k]);
d_tmp = log(z_t[i]) - 0.5*sum;
if(d_tmp<d_max)
break;
if(k == DIM_FEAT-1)
d_max =d_tmp;
}
}
return d_max;
}
void initializemean()
{
double a[39];
ifstream infile("d:\\t1.txt");
if(!infile)
exit(1);
for(int k=0;k<39;k++)
a[k]=0;
for(int i=0;i<39;i++)
{
infile>>gmm.mV[0][i];
}
for( i=0;i<39;i++)
cout<<gmm.mV[0][i]<<endl;
infile.close();
}
void opentest()
{
FILE *fp;
char s[20];
double f;
fp = fopen("d:\\test","r");
while(!feof(fp))
{
fscanf(fp,"%f",f);
printf("%f\n",f);
//printf(...);
}
}
void main()
{
//initializemean();
opentest();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -