a = levinson(r,n)
The Levinson-Durbin recursion is an algorithm for finding an
all-pole IIR filter with a prescribed deterministic
autocorrelation sequence. It has applications in filter design, coding,
and spectral estimation. The filter that
is minimum phase.
the coefficients of a
length(r)-1 order autoregressive
linear process which has
r as its autocorrelation
r is a real or complex deterministic
autocorrelation sequence. If
r is a matrix,
the coefficients for each column of
r and returns
them in the rows of
the default order of the denominator polynomial A(z);
a = [1 a(2) ... a(n+1)]. The filter coefficients
are ordered in descending powers of z–1.
a = levinson(r,n) returns the coefficients
for an autoregressive model of order n.
[a,e] returns the prediction
error, e, of order n.
[a,e,k] returns the reflection
k as a column vector of length
Estimate the coefficients of an autoregressive process given by
a = [1 0.1 -0.8];
Generate a realization of the process by filtering white noise of variance 0.4.
rng('default') v = 0.4; w = sqrt(v)*randn(15000,1); x = filter(1,a,w);
Estimate the correlation function. Discard the correlation values at negative lags. Use the Levinson-Durbin recursion to estimate the model coefficients.
[r,lg] = xcorr(x,'biased'); r(lg<0) = ; ar = levinson(r,numel(a)-1)
ar = 1.0000 0.0957 -0.8026
levinson solves the symmetric Toeplitz system
of linear equations
r = [r(1) ... r(n + 1)
] is the input
autocorrelation vector, and r(i)* denotes
the complex conjugate of r(i).
r is typically a vector of autocorrelation
coefficients where lag 0 is the first element, r(1).
The algorithm requires O(n2) flops
and is thus much more efficient than the MATLAB® backslash command
n. However, the
\ for low orders to provide the fastest possible
 Ljung, Lennart. System Identification: Theory for the User. 2nd Ed. Upper Saddle River, NJ: Prentice Hall, 1999.