📄 zp_decim.cpp
字号:
data_remain = nx;
ixbgn = 0;//从的0帧的第0个数据开始抽样
iybgn = 0;//从的0帧的第0个数据开始抽样
while(data_remain > FRM_LEN )//
{ fread (aIncx, sizeof(short), FRM_LEN, fpin);
{deci_num = 2;
for(x_num=0;x_num<FRM_LEN;x_num++)
{ x[x_num+BUF_LEN]=(double)aIncx[x_num];//初始化x后FRM_LEN个数据点
}
ixDcRn=decimation_buffer_and_frame
(x,BUF_LEN+FRM_LEN,h_1,H1_Length,BUF_LEN,y_half,deci_num,&ixbgn);
for(x_num=0;x_num<BUF_LEN;x_num++)
{ x[x_num]=(double)aIncx[FRM_LEN-BUF_LEN+x_num];//初始化x前BUF_LEN个数据点
}
}
//2
{deci_num = 2;
for(y_num=0;y_num<ixDcRn;y_num++)//中间
{ y[y_num+BUF_LEN]=(double)y_half[y_num];//初始化y后ixDcRn个数据点
}
iyDcRn=decimation_buffer_and_frame
(y,BUF_LEN+ixDcRn,h_1,H1_Length,BUF_LEN,y_half_third,deci_num,&iybgn);
for(x_num=0;x_num<BUF_LEN;x_num++)
{ y[x_num]=(double)y_half[ixDcRn-BUF_LEN+x_num];//初始化y前BUF_LEN个数据点
}
}
//4
{deci_num = 2;
for(z_num=0;z_num<ixDcRn;z_num++)//中间
{ z[z_num+BUF_LEN]=(double)y_half_third[z_num];//初始化y后ixDcRn个数据点
}
izDcRn=decimation_buffer_and_frame
(z,BUF_LEN+iyDcRn,h_1,H1_Length,BUF_LEN,z_half_third,deci_num,&iybgn);
for(z_num=0;z_num<BUF_LEN;z_num++)
{ z[z_num]=(double)y_half_third[iyDcRn-BUF_LEN+z_num];//初始化y前BUF_LEN个数据点
}
}
//8
data_remain=data_remain-FRM_LEN;
/////////写输出wav文件数据
for(z_num=0;z_num<izDcRn;z_num++)
{ aOutcx[z_num]=(short) z_half_third[z_num];
}
fwrite (aOutcx, sizeof(short), izDcRn, fpout);////写输出wav文件数据
}
{//处理不够一zhen的数据 data_remain < FRM_LEN
fread (aIncx, sizeof(short), data_remain, fpin);
for(x_num=0;x_num<data_remain;x_num++)
{ x[x_num+BUF_LEN]=(double)aIncx[x_num];//初始化x后FRM_LEN个数据点
}
{deci_num = 2;
ixDcRn=decimation_buffer_and_frame
(x,BUF_LEN+data_remain,h_1,H1_Length,BUF_LEN,y_half,deci_num,&ixbgn);
for(x_num=0;x_num<BUF_LEN;x_num++)
{ x[x_num]=(double)aIncx[FRM_LEN-BUF_LEN+x_num];//初始化x前BUF_LEN个数据点
}
}
//2
{deci_num = 2;
for(y_num=0;y_num<ixDcRn;y_num++)//中间
{ y[y_num+BUF_LEN]=(double)y_half[y_num];//初始化y后ixDcRn个数据点
}
iyDcRn=decimation_buffer_and_frame
(y,BUF_LEN+ixDcRn,h_1,H1_Length,BUF_LEN,y_half_third,deci_num,&iybgn);
for(x_num=0;x_num<BUF_LEN;x_num++)
{ y[x_num]=(double)y_half[ixDcRn-BUF_LEN+x_num];//初始化y前BUF_LEN个数据点
}
}
//4
{deci_num = 2;
for(z_num=0;z_num<ixDcRn;z_num++)//中间
{ z[z_num+BUF_LEN]=(double)y_half_third[z_num];//初始化y后ixDcRn个数据点
}
izDcRn=decimation_buffer_and_frame
(z,BUF_LEN+iyDcRn,h_1,H1_Length,BUF_LEN,z_half_third,deci_num,&iybgn);
for(z_num=0;z_num<BUF_LEN;z_num++)
{ z[z_num]=(double)y_half_third[izDcRn-BUF_LEN+z_num];//初始化y前BUF_LEN个数据点
}
}
//8
data_remain=data_remain-data_remain;
/////////写输出wav文件数据
for(z_num=0;z_num<izDcRn;z_num++)
{ aOutcx[z_num]=(short) z_half_third[z_num];
}
fwrite (aOutcx, sizeof(short), izDcRn, fpout);////写输出wav文件数据
}
fclose(fpin);
fclose(fpout);
}
void CZP_Decim::CZP_Decim_3_File(char *aInFlNm)
{
short aIncx[FRM_LEN]={0},aOutcx[FRM_LEN]={0};
double aIndb[FRM_LEN]={0},aOutdb[FRM_LEN]={0};
double x[FRM_LEN+BUF_LEN]={0},
y[FRM_LEN+BUF_LEN]={0},
y_half[FRM_LEN+BUF_LEN]={0},
y_half_third[FRM_LEN+BUF_LEN]={0};
int ixbgn=0,
iybgn=0,
x_num=0, y_num=0,
ixDcRn=0,
iyDcRn=0,
i =0,deci_num;
char aOutFlNm[40]="24kTo8k\\";
strcat(aOutFlNm,aInFlNm);
int data_remain;//剩下的还未处理的数据长度
///////////打开输入文件,读文件头
Load(aInFlNm);
nx = input_headOfWave.sizeOfData/sizeof(short);//16位,单通道
ny = nx/3;//Decimation_RATE;
int Decimation_RATE = 3;
Write(aOutFlNm,Decimation_RATE);
//分Frame降采样
data_remain = nx;
ixbgn = 0;//从的0帧的第0个数据开始抽样
iybgn = 0;//从的0帧的第0个数据开始抽样
while(data_remain > FRM_LEN )//
{ fread (aIncx, sizeof(short), FRM_LEN, fpin);
for(x_num=0;x_num<FRM_LEN;x_num++)
{ x[x_num+BUF_LEN]=(double)aIncx[x_num];//初始化x后FRM_LEN个数据点
}
deci_num = 3;
iyDcRn=decimation_buffer_and_frame
(x,BUF_LEN+FRM_LEN,h_2,H2_Length,BUF_LEN,y_half_third,deci_num,&iybgn);
for(x_num=0;x_num<BUF_LEN;x_num++)
{ x[x_num]=(double)aIncx[FRM_LEN-BUF_LEN+x_num];//初始化x前BUF_LEN个数据点
}
data_remain=data_remain-FRM_LEN;
/////////写输出wav文件数据
for(y_num=0;y_num<iyDcRn;y_num++)
{ aOutcx[y_num]=(short) y_half_third[y_num];
}
fwrite (aOutcx, sizeof(short), iyDcRn, fpout);////写输出wav文件数据
}
{//处理不够一zhen的数据 data_remain < FRM_LEN
fread (aIncx, sizeof(short), data_remain, fpin);
for(x_num=0;x_num<data_remain;x_num++)
{ x[x_num+BUF_LEN]=(double)aIncx[x_num];//初始化x后FRM_LEN个数据点
}
deci_num = 3;
iyDcRn=decimation_buffer_and_frame
(x,BUF_LEN+data_remain,h_2,H2_Length,BUF_LEN,y_half_third,deci_num,&iybgn);
for(x_num=0;x_num<BUF_LEN;x_num++)
{ x[x_num]=(double)aIncx[FRM_LEN-BUF_LEN+x_num];//初始化x前BUF_LEN个数据点
}
data_remain=data_remain-data_remain;
/////////写输出wav文件数据
for(y_num=0;y_num<iyDcRn;y_num++)
{ aOutcx[y_num]=(short) y_half_third[y_num];
}
fwrite (aOutcx, sizeof(short), iyDcRn, fpout);////写输出wav文件数据
}
fclose(fpin);
fclose(fpout);
}
void CZP_Decim::Cfix_head( char* aInFlNm )
{ short aIncx[FRM_LEN2] = { 0 }; char aOutFlNm[40]="fix\\";
strcat(aOutFlNm,aInFlNm);
fpin = fopen(aInFlNm,"rb");
fpout = fopen(aOutFlNm,"wb");
fread (&input_headOfWave, sizeof(WAVEFILEFMT), 1, fpin);
input_headOfWave.navgBytesPerSec = input_headOfWave.nSamplesPerSec * 2;
input_headOfWave.nBlockAlign = input_headOfWave.nChannels * input_headOfWave.nBitPerSample / 8 ;//一次采样的块大小
input_headOfWave.sizeOfFile = input_headOfWave.sizeOfData + 36;
fwrite (&input_headOfWave, sizeof(WAVEFILEFMT), 1, fpout);
//分Frame降采样
int data_remain = input_headOfWave.sizeOfData/sizeof(short);;
while(data_remain > FRM_LEN2 )//
{ fread (aIncx, sizeof(short), FRM_LEN2, fpin);
data_remain = data_remain-FRM_LEN2;
fwrite (aIncx, sizeof(short), FRM_LEN2, fpout);////写输出wav文件数据
}
{//处理不够一zhen的数据 data_remain < FRM_LEN2
fread (aIncx, sizeof(short), data_remain, fpin);
fwrite (aIncx, sizeof(short), data_remain, fpout);////写输出wav文件数据
}
fclose(fpin);
fclose(fpout);
}
void CZP_Decim::C2to187( char *aInFlNm )
{
char channel_1[40];
strcpy(channel_1,aInFlNm);
char channel_2[40];
aInFlNm[strlen(aInFlNm)-5]='2';
strcpy(channel_2,aInFlNm);
char channel_3[40];
aInFlNm[strlen(aInFlNm)-5]='3';
strcpy(channel_3,aInFlNm);
char channel_4[40];
aInFlNm[strlen(aInFlNm)-5]='4';
strcpy(channel_4,aInFlNm);
char channel_5[40];
aInFlNm[strlen(aInFlNm)-5]='5';
strcpy(channel_5,aInFlNm);
char channel_6[40];
aInFlNm[strlen(aInFlNm)-5]='6';
strcpy(channel_6,aInFlNm);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -