📄 bwexp.c
字号:
/* Copyright 2001,2002,2003 NAH6
* All Rights Reserved
*
* Parts Copyright DoD, Parts Copyright Starium
*
*/
/*LINTLIBRARY*/
/*PROTOLIB1*/
#include <math.h>
#include "main.h"
#include "bwexp.h"
/**************************************************************************
*
* ROUTINE
* BWExpand
*
* FUNCTION
* Bandwidth expansion of LPC predictor coefficients
*
* SYNOPSIS
* BWExpand(alpha, pc, pcexp)
*
* formal
* data I/O
* name type type function
* -------------------------------------------------------------------
* alpha float i Bandwidth expansion factor
* pc float i predictor coefficients
* pcexp float o expanded predictor coefficients
***************************************************************************
*
* DESCRIPTION
*
* Subroutine to perform bandwidth modification by moving the poles
* (or zeros) radially in the z plane. If the bandwidth expansion
* factor (alpha) is less than unity, the bandwidths are expanded by
* shifting the poles (or zeros) toward the origin of the z plane.
* The predictor coefficients are scaled directly according to:
*
* i-1
* a' = a alpha where i = 1, . . . , order+1
* i i
*
* Resulting in a bandwidth expansion of:
*
* -(fs/pi)ln(alpha) Hz
*
* (e.g., fs = 8 kHz, alpha = 0.994127 -> 15 Hz bandwidth expansion)
*
* CELP's LPC predictor coefficient convention is:
* p+1 -(i-1)
* A(z) = SUM a z where a = +1.0
* i=1 i 1
*
***************************************************************************
*
* CALLED BY
*
* FindAdaptResidual FindImpulseResponse PostFilter
* FindLPCResidual UpdateEverything LPC_Analysis
*
**************************************************************************/
void BWExpand(
float alpha,
float pc[ORDER+1],
float pcexp[ORDER+1])
{
int i;
pcexp[0] = pc[0];
for (i = 1; i <= ORDER; i++)
pcexp[i] = pc[i]*(float)pow((double)(alpha),(double)(i));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -