Collaboration diagram for DSP_iir_lat:
void | DSP_iir_lat (short *x, int nx, const short *restrict k, int nk, int *restrict b, short *r) |
void DSP_iir_lat | ( | short * | x, | |
int | nx, | |||
const short *restrict | k, | |||
int | nk, | |||
int *restrict | b, | |||
short * | r | |||
) |
This routine implements a real all-pole IIR filter in lattice structure (AR lattice). The filter consists of nk lattice stages. Each stage requires one reflection coefficient k and one delay element b. The routine takes an input vector x[] and returns the filter output in r[]. Prior to the first call of the routine the delay elements in b[] should be set to zero. The input data may have to be pre-scaled to avoid overflow or achieve better SNR. The reflections coefficients lie in the range -1.0 < k < 1.0. The order of the coefficients is such that k[nk-1] corresponds to the first lattice stage after the input and k[0] corresponds to the last stage.
x[nx] | = Input vector (16-bit) | |
nx | = Length of input vector. | |
k[nk] | = Reflection coefficients in Q.15 format | |
nk | = Number of reflection coefficients/lattice stages | |
b[nk+1] | = Delay line elements from previous call. Should be initialized to all zeros prior to the first call. | |
r[nx] | = Output vector (16-bit) |