Advanced DSP

Levinson-Durbin Algorithm

Lecture 5
Conducted by: Udayan Kanade

Suppose we want to least-squares solve a convolution system Axy. The columns of A are shifted variants of the same “signal” a. Thus, these column vectors, a1, a2, ...al have special properties. E.g. a2 looks to a1 as a3 looks to a2, as a2 looks to a3. The dot products between all these columns can be found by finding the autocorrelation of a, which can be found using the FFT. Similarly, the dot product of the columns with y is the cross correlation between a and y.

Suppose we already know the best prediction of y using [a1, a2, a3], and we know the linear combiners which will achieve this. Thus, we know y ≈ β1a1 + β2a2 + β3a3. To find the best prediction of y in terms of [a1, a2, a3, a4], we first orthogonalize a4 with respect to [a1, a2, a3], as follows.

Suppose we already know the best prediction of a3 with respect to [a1, a2]. Suppose a3α1a1 + α2a2. We can also say a4α1a2 + α2a3. Immediately, a4 can be orthogonalized with respect to [a2, a3]. Now if we orthogonalized a1 with respect to [a2, a3] our task would be done. Ah, but a1α1a3 + α2a2. Thus, the orthogonalization of a1 is q = a1α1a3α2a2. We should use exactly ‹a4,q›/‹q,q› scale of q. Out of this, ‹a4,q› is found by substituting the value of q and using the autocorrelation values of a. ‹q,q› is given to us by the previous iteration. Multiply the coefficients in the q expression by this scale, and add it to the previous a4 approximation expression, to get the coefficients which give the best approximation to a4 in terms of [a1, a2, a3]. Thus, we get the orthogonalization of a4 with respect to [a1, a2, a3] which we will call q4 = a4α1'a1α2'a2α3'a3.

This means my new best estimation of y is y ≈ β1a1 + β2a2 + β3a3 + (‹y,q4›/‹q4,q4›)q4. Substituting the q4 expression in the above expression will give us the required prediction of y in terms of [a1, a2, a3, a4].

There is a fast way to calculate ‹q4,q4›. ‹q4,q4› is the energy remaining in a4 after the energy of the vector (‹a4,q›/‹q,q›)q is taken away from the original remaining energy of ‹q,q›. Thus ‹q4,q4› = ‹q,q› − (‹a4,q›)2/‹q,q›. Furthermore, ‹q4,q4› becomes the ‹q,q› for the next iteration.

Thus, we end up with the αs, βs and ‹q,q›, which are used in the next iteration. Each iteration takes time proportional to current order. If the final order is l, the algorithm runs in O(l2) time. The time to find the auto and cross correlations will O(ologo), where o is the dimensions of a and y. It is important to notice that once the correlations are found out, there is no more meddling in the signal space. We are directly in the space of x. All the equations above are evaluated only upto their coefficients in the as, not till the final vector in the y space. The final βs are the required x.



Links:


Relations:

The Levinson-Durbin algorithm is used to solve LS matrix inversion problems for Toeplitz matrices – LS deconvolution problems, (which themselves occur in many system identification algorithms) and prediction, Wiener filtering and autocorrelation estimation of stationary random processes. This algorithm is based on the idea of successive orthogonalization.