求Durbin算法的程序
/*-------------LPC analyze-----------------------*/
/*-------------fralen,FRAME_LEN:LPC分析帧长----*/
/**------------ORDER:LPC分析阶数,一般取10-----*/
void lpc_ana(float input[],float lpc[],int fralen)
{
int i,j;
float in[FRAME_LEN],a[ORDER+1][ORDER+1],temp,alphap;
float R[FRAME_LEN],k[FRAME_LEN];
double sum=0;
/* -------计算自相关值----*/
for(i=0;i<fralen;i++)
{
R[i]=0;
for(j=0;j<FRAME_LEN-i;j++)
R[i]+=in[j]*in[j+i];
}
if(!R[0])
{
for(i=0;i<ORDER;i++)
lpc[i]=0;
goto L;
}
/*-------进行LPC分析-----*/
k[1]=-R[1]/R[0];
a[1][1]=k[1];
alphap=(1-k[1]*k[1])*R[0];
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余1页未读,立即下载