Levinson recursion

Levinson recursion

Levinson recursion or Levinson-Durbin recursion is a procedure in linear algebra to recursively calculate the solution to an equation involving a Toeplitz matrix. The algorithm runs in Θ(n2) time, which is a strong improvement over Gauss-Jordan elimination, which runs in Θ(n3).

Newer algorithms, called "asymptotically fast" or sometimes "superfast" Toeplitz algorithms, can solve in Θ(n logpn) for various p (e.g. p = [http://web.comlab.ox.ac.uk/oucl/work/richard.brent/pd/rpb143tr.pdf 2] , p = [http://saaz.cs.gsu.edu/papers/sfast.pdf 3] ). Levinson recursion remains popular for several reasons; for one, it is relatively easy to understand in comparison; for another, it can be faster than a superfast algorithm for small n (usually n < 256 [http://www.math.niu.edu/~ammar/papers/amgr88.pdf] ).

The Levinson-Durbin algorithm was proposed first by Norman Levinson in 1947, improved by J. Durbin in 1960, and subsequently improved to 4"n"2 and then 3"n"2 multiplications by W. F. Trench and S. Zohar, respectively.

Other methods to process data include Schur decomposition and Cholesky decomposition. In comparison to these, Levinson recursion (particularly Split-Levinson recursion) tends to be faster computationally, but more sensitive to computational inaccuracies like round-off errors.

Derivation

Background

Matrix equations follow the form:

: vec y = mathbf M vec x

The Levinson-Durbin algorithm may be used for any such equation, so long as "M" is a known Toeplitz matrix with a nonzero main diagonal. Here vec y is a known vector, and vec x is an unknown vector of numbers "xi" yet to be determined.

For the sake of this article, "&ecirc;i" is a vector made up entirely of zeroes, except for its i'th place, which holds the value one. Its length will be implicitly determined by the surrounding context. The term "N" refers to the width of the matrix above -- "M" is an "N"&times;"N" matrix. Finally, in this article, superscripts refer to an "inductive index", whereas subscripts denote indices. For example (and definition), in this article, the matrix "Tn" is an "n&times;n" matrix which copies the upper left "n&times;n" block from "M" -- that is, "Tnij" = "Mij".

"Tn" is also a Toeplitz matrix; meaning that it can be written as:

: mathbf T^n = egin{bmatrix} t_0 & t_{-1} & t_{-2} & dots & t_{-n+1} \ t_1 & t_0 & t_{-1} & dots & t_{-n+2} \ t_2 & t_1 & t_0 & dots & t_{-n+3} \ vdots & vdots & vdots & ddots & vdots \ t_{n-1}& t_{n-2} & t_{n-3} & dots & t_0 \ end{bmatrix}

Introductory steps

The algorithm proceeds in two steps. In the first step, two sets of vectors, called the "forward" and "backward" vectors, are established. The forward vectors are used to help get the set of backward vectors; then they can be immediately discarded. The backwards vectors are necessary for the second step, where they are used to build the solution desired.

Levinson-Durbin recursion defines the nth "forward vector", denoted vec f^n, as the vector of length n which satisfies:

:mathbf T^n vec f^n = hat e_1

The nth "backward vector" vec b^n is defined similarly; it is the vector of length n which satisfies:

:mathbf T^n vec b^n = hat e_n

An important simplification can occur when "M" is a symmetric matrix; then the two vectors are related by "bni" = "fnn+1-i" -- that is, they are row-reversals of each other. This can save some extra computation in that special case.

Obtaining the backward vectors

Even if the matrix is not symmetric, then the nth forward and backward vector may be found from the vectors of length n-1 as follows. First, the forward vector may be extended with a zero to obtain:

:mathbf T^n egin{bmatrix} vec f^{n-1} \ 0 \ end{bmatrix} = egin{bmatrix} & & & t_{-n+1} \ & mathbf T^{n-1} & & t_{-n+2} \ & & & vdots \ t_{n-1} & t_{n-2} & dots & t_0 \ end{bmatrix} egin{bmatrix} \ vec f^{n-1} \ \ 0 \ \ end{bmatrix} = egin{bmatrix} 1 \ 0 \ vdots \ 0 \ epsilon_f^n \ end{bmatrix}

In going from "Tn-1" to "Tn", the extra "column" added to the matrix does not perturb the solution when a zero is used to extend the forward vector. However, the extra "row" added to the matrix "has" perturbed the solution; and it has created an unwanted error term "&epsilon;f" which occurs in the last place. The above equation gives it the value of:

: epsilon_f^n = sum_{i=1}^{n-1} M_{ni} f_{i}^{n-1} = sum_{i=1}^{n-1} t_{n-i} f_{i}^{n-1}

This error will be returned to shortly and eliminated from the new forward vector; but first, the backwards vector must be extended in a similar (albeit reversed) fashion. For the backwards vector,

: mathbf T^n egin{bmatrix} 0 \ vec b^{n-1} \ end{bmatrix} =

egin{bmatrix} t_0 & dots & t_{-n+2} & t_{-n+1} \ vdots & & & \ t_{n-2} & & mathbf T^{n-1} & \ t_{n-1} & & & \ end{bmatrix} egin{bmatrix} \ 0 \ \ vec b^{n-1} \ \ end{bmatrix} = egin{bmatrix} epsilon_b^n \ 0 \ vdots \ 0 \ 1 \ end{bmatrix}

Like before, the extra column added to the matrix does not perturb this new backwards vector; but the extra row does. Here we have another unwanted error "&epsilon;b" with value:

: epsilon_b^n = sum_{i=2}^n M_{1i} b_{i-1}^{n-1} = sum_{i=1}^{n-1} t_{-i} b_i^{n-1}

These two error terms can be used to eliminate each other. Using the linearity of matrices,

: forall (alpha,eta) mathbf T left( alpha egin{bmatrix} vec f \ \ 0 \ end{bmatrix} + eta egin{bmatrix} 0 \ \ vec b \ end{bmatrix} ight ) = alpha egin{bmatrix} 1 \ 0 \ vdots \ 0 \ epsilon_f \ end{bmatrix} + eta egin{bmatrix} epsilon_b \ 0 \ vdots \ 0 \ 1 \ end{bmatrix}

If α and &beta; are chosen so that the right hand side yields &ecirc;1 or &ecirc;n, then the quantity in the parentheses will fulfill the definition of the nth forward or backward vector, respectively. With those alpha and beta chosen, the vector sum in the parentheses is simple and yields the desired result.

To find these coefficients, alpha^n_{f}, eta^n_{f} are such that ::vec f_n = alpha^n_{f} egin{bmatrix} vec f_{n-1}\0end{bmatrix} +eta^n_{f}egin{bmatrix}0\ vec b_{n-1}end{bmatrix} and respectively alpha^n_{b}, eta^n_{b} are such that ::vec b_n = alpha^n_{b}egin{bmatrix}vec f_{n-1}\0end{bmatrix} +eta^n_{b}egin{bmatrix}0\ vec b_{n-1}end{bmatrix}

By multiplying both previous equations by {mathbf T}^n one gets the following equation:: egin{bmatrix} 1 & epsilon^n_b \ 0 & 0 \vdots & vdots \0 & 0 \epsilon^n_f & 1 end{bmatrix} egin{bmatrix} alpha^n_f & alpha^n_b \ eta^n_f & eta^n_b end{bmatrix} = egin{bmatrix} 1 & 0 \ 0 & 0 \vdots & vdots \0 & 0 \0 & 1 end{bmatrix}

Now, all the zeroes in the middle of the two vectors above being disregarded and collapsed, only the following equation is left:

: egin{bmatrix} 1 & epsilon^n_b \ epsilon^n_f & 1 end{bmatrix} egin{bmatrix} alpha^n_f & alpha^n_b \ eta^n_f & eta^n_b end{bmatrix} = egin{bmatrix} 1 & 0 \ 0 & 1 end{bmatrix}

With these solved for (by using the Cramer 2x2 matrix inverse formula), the new forward and backward vectors are:

: vec f^n = {1 over { 1 - epsilon_b^n epsilon_f^n egin{bmatrix} vec f^{n-1} \ 0 end{bmatrix} - { epsilon_f^n over { 1 - epsilon_b^n epsilon_f^n egin{bmatrix} 0 \ vec b^{n-1} end{bmatrix}

: vec b^n = {1 over { 1 - epsilon_b^n epsilon_f^n egin{bmatrix} 0 \ vec b^{n-1} end{bmatrix} - { epsilon_b^n over { 1 - epsilon_b^n epsilon_f^n egin{bmatrix} vec f^{n-1} \ 0 end{bmatrix}

Performing these vector summations, then, gives the nth forward and backward vectors from the prior ones. All that remains is to find the first of these vectors, and then some quick sums and multiplications give the remaining ones. The first forward and backward vectors are simply:

: vec f^1 = vec b^1 = egin{bmatrix}{1 over M_{11end{bmatrix} = egin{bmatrix}{1 over t_0}end{bmatrix}

Using the backward vectors

The above steps give the N backward vectors for "M". From there, a more arbitrary equation is:

: vec y = mathbf M vec x

The solution can be built in the same recursive way that the backwards vectors were built. Accordingly, vec x must be generalized to a sequence vec x^n, from which vec x^N = vec x.

The solution is then built recursively by noticing that if:

: mathbf T^{n-1} egin{bmatrix} x_1^{n-1} \ x_2^{n-1} \ dots \ x_{n-1}^{n-1} \ end{bmatrix} = egin{bmatrix} y_1 \ y_2 \ dots \ y_{n-1} \ end{bmatrix}

Then, extending with a zero again, and defining an error constant where necessary:

: mathbf T^{n} egin{bmatrix} x_1^{n-1} \ x_2^{n-1} \ dots \ x_{n-1}^{n-1} \ 0 \ end{bmatrix} = egin{bmatrix} y_1 \ y_2 \ dots \ y_{n-1} \ epsilon_x^{n-1} end{bmatrix}

We can then use the nth backward vector to eliminate the error term and replace it with the desired formula as follows:

: mathbf T^{n} left ( egin{bmatrix} x_1^{n-1} \ x_2^{n-1} \ dots \ x_{n-1}^{n-1} \ 0 \ end{bmatrix} + (y_n - epsilon_x^{n-1}) vec b^n ight ) = egin{bmatrix} y_1 \ y_2 \ dots \ y_{n-1} \ y_n \ end{bmatrix}

Extending this method until n = N yields the solution vec x.

In practice, these steps are often done concurrently with the rest of the procedure, but they form a coherent unit and deserve to be treated as their own step.

Block Levinson algorithm

If "M" is not strictly Toeplitz, but block Toeplitz, the Levinson recursion can be derived in much the same way by regarding the block Toeplitz matrix as a Toeplitz matrix with matrix elements (Musicus 1988). Block Toeplitz matrices arise naturally in signal processing algorithms when dealing with multiple signal streams (e.g., in MIMO systems) or cyclo-stationary signals.

References

Defining sources
* Levinson, N. (1947). "The Wiener RMS error criterion in filter design and prediction." "J. Math. Phys.", v. 25, pp. 261-278.
* Durbin, J. (1960). "The fitting of time series models." "Rev. Inst. Int. Stat.", v. 28, pp. 233-243.
* Trench, W. F. (1964). "An algorithm for the inversion of finite Toeplitz matrices." "J. Soc. Indust. Appl. Math.", v. 12, pp. 515-522.
* Musicus, B. R. (1988). "Levinson and Fast Choleski Algorithms for Toeplitz and Almost Toeplitz Matrices." "RLE TR" No. 538, MIT. [http://dspace.mit.edu/bitstream/1721.1/4954/1/RLE-TR-538-20174000.pdf]
* Delsarte, P. and Genin, Y. V. (1986). "The split Levinson algorithm." "IEEE Transactions on Acoustics, Speech, and Signal Processing", v. ASSP-34(3), pp. 470–478.Further work
* Bunch, J. R. (1985). "Stability of methods for solving Toeplitz systems of equations." "SIAM J. Sci. Stat. Comput.", v. 6, pp. 349-364. [http://locus.siam.org/fulltext/SISC/volume-06/0906025.pdf] Summaries
* Bäckström, T. (2004). "2.2. Levinson-Durbin Recursion." "Linear Predictive Modelling of Speech -- Constraints and Line Spectrum Pair Decomposition." Doctoral thesis. Report no. 71 / Helsinki University of Technology, Laboratory of Acoustics and Audio Signal Processing. Espoo, Finland. [http://lib.tkk.fi/Diss/2004/isbn9512269473/isbn9512269473.pdf]
* Claerbout, Jon F. (1976). "Chapter 7 - Waveform Applications of Least-Squares." "Fundamentals of Geophysical Data Processing." Palo Alto: Blackwell Scientific Publications. [http://sep.stanford.edu/oldreports/fgdp2/fgdp_07.pdf]

ee also

*Split Levinson recursion
*Linear prediction


Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Look at other dictionaries:

  • Levinson — is a surname, and may refer to:* André Levinson * Arthur D. Levinson * Barry Levinson * Dennis Levinson * Eric L. Levinson * Feodor Levinson Lessing * Gerald Levinson * Jonathan Levinson * Mark Levinson * Norman Levinson ** Levinson recursion (… …   Wikipedia

  • Recursión de Levinson — Saltar a navegación, búsqueda La recursión de Levinson o de Levinson Durbin es un algoritmo del álgebra lineal para calcular en forma recursiva la solución de una ecuación que involucra una matriz de Toeplitz. El costo computacional es de Θ(n2),… …   Wikipedia Español

  • Norman Levinson — (August 11, 1912, Lynn, Massachusetts – October 10, 1975, Boston) was an American mathematician. Some of his major contributions were in the study of Fourier transforms, complex analysis, non linear differential equations, number theory, and… …   Wikipedia

  • Algoritmo de Levinson — El algoritmo de Levinson o de Levinson Durbin es un algoritmo del álgebra lineal para calcular en forma recursiva la solución de una ecuación que involucra una matriz de Toeplitz. El costo computacional es de Θ(n2), una mejora considerable frente …   Wikipedia Español

  • Linear prediction — is a mathematical operation where future values of a discrete time signal are estimated as a linear function of previous samples.In digital signal processing, linear prediction is often called linear predictive coding (LPC) and can thus be viewed …   Wikipedia

  • Deconvolution — In mathematics, deconvolution is an algorithm based process used to reverse the effects of convolution on recorded data.[1] The concept of deconvolution is widely used in the techniques of signal processing and image processing. Because these… …   Wikipedia

  • List of mathematics articles (L) — NOTOC L L (complexity) L BFGS L² cohomology L function L game L notation L system L theory L Analyse des Infiniment Petits pour l Intelligence des Lignes Courbes L Hôpital s rule L(R) La Géométrie Labeled graph Labelled enumeration theorem Lack… …   Wikipedia

  • List of algorithms — The following is a list of the algorithms described in Wikipedia. See also the list of data structures, list of algorithm general topics and list of terms relating to algorithms and data structures.If you intend to describe a new algorithm,… …   Wikipedia

  • System of linear equations — In mathematics, a system of linear equations (or linear system) is a collection of linear equations involving the same set of variables. For example,:egin{alignat}{7}3x ; + ; 2y ; ; z ; = ; 1 2x ; ; 2y ; + ; 4z ; = ; 2 x ; + ; frac{1}{2} y ; ; z …   Wikipedia

  • List of numerical analysis topics — This is a list of numerical analysis topics, by Wikipedia page. Contents 1 General 2 Error 3 Elementary and special functions 4 Numerical linear algebra …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”