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

📄 归一化.cpp

📁 mfcc神经网络的输出节点与其邻域其它节点广泛相连
💻 CPP
字号:

#include"fft.h"



void TimeNormalize(double **x_in, int len_in, double *x_out, int len_out)
{
	int i,j,k;
	double *cum_dist, rate0, rate1, deno, delta_dist, dif, tmp;

	len_in = len_in-1;
	cum_dist = new double [len_in];
    
	for(i=0,cum_dist[0]=0.,tmp=0. ; i<len_in-1 ; i++){
		tmp+=GetDist(x_in[i+1],x_in[i+2],iNUM);
	    cum_dist[i+1]=tmp;
	}
	delta_dist=cum_dist[len_in-1]/(double)(len_out-1);

	for(i=0;i<iNUM;i++) x_out[i]=x_in[1][i];

	for(i=1; i<len_out-1;i++){
		dif=delta_dist*(double)i;
		for(j=0;j<len_in-1;j++)
			if(dif>=cum_dist[j]&&dif<cum_dist[j+1]){
				deno=cum_dist[j+1]-cum_dist[j];
				rate0=(dif-cum_dist[j])/deno;
				rate1=(cum_dist[j+1]-dif)/deno;

				for(k=0;k<iNUM;k++)
					x_out[i*iNUM+k]=(double)(rate0*x_in[j+2][k]+rate1*x_in[j+1][k]);
			}
	}
  
	for(k=0;k<iNUM;k++)
			x_out[(len_out-1)*iNUM+k]=x_in[len_in+1-1][k];
	delete [] cum_dist;	cum_dist = NULL;

}

void AmpNormalize(double *x_in, int iLen)
{
	int i;

	double dSum;

	for( i=0, dSum=0 ; i<iLen ; i++ )
	{
		dSum += x_in[i];
	}

	dSum/=(double)iLen;

	for( i=0 ; i<iLen ; i++ )
	{
		x_in[i]/=dSum;
	}
}



double GetDist(double *x, double *y, int dim)
{
	int i;
	double distance;

	for(i=0, distance=0.;i<dim;i++)
		if(x[i]>y[i]) distance+=(x[i]-y[i]);
		else distance+=(y[i]-x[i]);

	return(distance);
}

⌨️ 快捷键说明

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