double SPcovCXpc (const float *Cov[], float pc[], int Np)


Find predictor coefficients using the covariance lattice method (Cumani)


This routine calculates the parameters for a lattice predictor which minimizes the sum of the forward and backward errors. The reflection coefficients which describe the lattice filter are converted to the predictor coefficients which are returned. This procedure guarantees a minimum phase prediction error filter.

Consider a linear predictor with Np coefficients,

  y(k) = SUM p(i) x(k-i) ,
where x(i) is the input signal. This routine returns the predictor cofficients.

This procedure is based on Makhoul's covariance lattice method as modified by Cumani to compute the result using reflection coefficients. The reflection coefficients are chosen to minimize a weighted sum of the forward and backward prediction errors.

The original covariance lattice method of Makhoul allowed for minimizing a weighted combination of the forward and backward prediction errors. Here the forward and backward prediction errors have equal weight. In addition, the computation of the reflection coefficients is modified as specified in the EIA/TIA IS-54-B digital mobile cellular radio standard.

The computation uses a correlation matrix Cov with elements defined as

  Cov(i,j) = E[x(k-i) x(k-j)],  for 0 <= i,j <= Np.

The expectation operator E[.] is often replaced by a sum over k over a finite interval. Minimization of the prediction error over this interval defines the so-called covariance method for determining the linear prediction coefficients.

1: J. Makhoul, "Stable and efficient lattice methods for linear prediction", IEEE Trans. Acoustics, Speech, Signal Processing, vol. ASSP-25, pp. 423-428, October 1977.
2: A. Cumani, "On a covariance-lattice algorithm for linear prediction", Proc. IEEE Conf. Acoustics, Speech, Signal Processing, Paris, pp. 651-654, May 1982.
3: EIA/TIA Interim Standard IS-54-B, "Cellular System Dual-Mode Mobile Station - Base Station Compatibility Standard", Telecommunications Industry Association, April 1992.

Predictor coefficients are usually expressed algebraically as vectors with 1-offset indexing. The correspondence to the 0-offset C-arrays is as follows.

  p(1) <==> pc[0]       predictor coefficient corresponding to lag 1
  p(i) <==> pc[i-1]     1 <= i < Np


<- double SPcovCXpc
Resultant prediction error energy
-> const float *Cov[]
Cov is an array of pointers to the rows of an Np+1 by Np+1 symmetric positive definite correlation matrix. Only the lower triangular portion of Cov is accessed. Note that with ANSI C, if the actual parameter is not declared to have the const attribute, an explicit cast to (const float **) is required.
<- const float pc[]
Np element vector of predictor coefficients. Coefficient pc[i] is the predictor coefficient corresponding to lag i+1.
-> int Np
Number of prediction coefficients

Author / revision

P. Kabal / Revision 1.12 2003/05/09

See Also

SPcovLXpc, SPcovXpc, SPcovar

Main Index libtsp