Main Content

poly2rc

Convert prediction filter polynomial to reflection coefficients

Description

k = poly2rc(a) returns a vector k of lattice-structure reflection coefficients from a vector a of prediction filter coefficients.

[k,r0] = poly2rc(a,eFinal) also returns the zero-lag autocorrelation, r0, based on the final prediction error eFinal.

example

Examples

collapse all

Given a prediction filter polynomial, a, and a final prediction error, efinal, determine the reflection coefficients of the corresponding lattice structure and the zero-lag autocorrelation.

a = [1.0000 0.6149 0.9899 0.0000 0.0031 -0.0082];
efinal = 0.2;
[k,r0] = poly2rc(a,efinal)
k = 5×1

    0.3090
    0.9801
    0.0031
    0.0081
   -0.0082

r0 = 
5.6032

Input Arguments

collapse all

Prediction filter coefficients, specified as a vector.

Note

The value of a has the following restrictions:

  • a(1) cannot be 0.

  • If a(1) is not equal to 1, the poly2rc function normalizes the prediction filter polynomial by a(1).

Data Types: single | double
Complex Number Support: Yes

Final prediction error power, specified as a scalar.

Data Types: single | double
Complex Number Support: Yes

Output Arguments

collapse all

List of reflection coefficients, returned as a column vector of length p, where p+1 is the number of elements of a.

Zero-lag autocorrelation, returned as a scalar.

Limitations

If abs(k(i)) == 1 for any i, finding the reflection coefficients is an ill-conditioned problem. poly2rc returns some NaNs and provides a warning message in those cases.

Tips

A simple and quick way to verify if all the roots of a lie inside the unit circle is to check if all the elements of k have magnitude less than 1.

stable = all(abs(poly2rc(a))<1)

Algorithms

The poly2rc function implements the following recursive relationship:

k(n)=an(n)an1(m)=an(m)k(n)an(nm)1k(n)2,m=1,2,,n1

This relationship is based on Levinson’s recursion [1]. To implement it, poly2rc loops through a in reverse order after discarding its first element. For each loop iteration i, the function:

  1. Sets k(i) equal to a(i)

  2. Applies the second relationship above to elements 1 through i of the vector a.

    a = (a-k(i)*fliplr(a))/(1-k(i)^2);
    

References

[1] Kay, Steven M. Modern Spectral Estimation. Englewood Cliffs, NJ: Prentice-Hall, 1988.

Extended Capabilities

Version History

Introduced before R2006a