www.pudn.com > fundamental.rar > fundamental.cpp


//此程序测试基音周期 
#include 
#include 
#include 
#include  
#include  
#define N1 200                      //窗长 
#define N2 200   
#define N  N1+N2   
#define c  0.96      
#define M  70               
 
int main() 
{   FILE *fp,*fout; 
    int i,j,t;   
	short maxt1,maxt2,maxt3; 
	short numb1[N1]={0};                   //初始值 
    double numb2[N1];                      //数值滤波中间值 
	double buffer1[N]={0};                 //缓冲数组400 
	double buffer2[N]={0}; 
    double sum,sum2,sum3,sum4,sum5,Zp;     
    double max1,max2,max3,max4,maxavr,maxall,ELP; 
	short fundtime[M]={0}; 
	short maxtall; 
	double nccf[150]={0}; 
/****************************************************************************/ 
//                             打开文件 
/****************************************************************************/ 
    fp=fopen("ray1.dat","rb");                    
	if((fout=fopen("fundamental.dat","wb"))==NULL) 
	{ 
		cout<<"can't open fundamental"<max1) 
				{ 
					max1=nccf[t]; 
					maxt1=t; 
				} 
			}  
			for(t=40;t<=79;t++) 
			{   
				if(nccf[t]>max2) 
				{ 
					max2=nccf[t]; 
					maxt2=t; 
				} 
			}     
			for(t=80;t<=147;t++) 
			{   
				if(nccf[t]>max3) 
				{ 
					max3=nccf[t]; 
					maxt3=t; 
				} 
			}    
			maxall=max3; 
			maxtall=maxt3; 
			if(max2>=c*maxall) 
			{   
				maxall=max2; 
				maxtall=maxt2; 
			} 
			if(max1>=c*maxall) 
			{    
				maxall=max1; 
				maxtall=maxt1; 
			}   
			maxavr=(max1+max2+max3)/3; 
			max4=0; 
			if(max1>max2) 
				max4=max1; 
			else 
				max4=max2; 
			if(max4=20)) 
				fundtime[j]=maxtall;  
			else 
				fundtime[j]=0;                      //基音周期为0  
		 } 
 
	} 
  fwrite(fundtime,sizeof(short),M,fout); 
  fclose(fp); 
  fclose(fout); 
  return 0; 
}