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; }