You are here : matlabSignal Processinglevinson

levinson() - Signal Processing

```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 levinson produces
is minimum phase.a = levinson(r) finds
the coefficients of a length(r)-1 order autoregressive
linear process which has r as its autocorrelation
sequence. r is a real or complex deterministic
autocorrelation sequence. If r is a matrix, levinson finds
the coefficients for each column of r and returns
them in the rows of a.  n=length(r)-1 is
the default order of the denominator polynomial A(z);
that is, a = [1 a(2) ... a(n+1)]. The filter coefficients
are ordered in descending powers of z–1.H(z)=1A(z)=11+a(2)z−1+⋯+a(n+1)z−na = levinson(r,n) returns the coefficients
for an autoregressive model of order n.[a,e] = levinson(r,n)  returns the prediction
error, e, of order n. [a,e,k] = levinson(r,n) returns the reflection
coefficients k as a column vector of length n.
Note

k is computed internally while computing
the a coefficients, so returning k simultaneously
is more efficient than converting a to k with tf2latc.```

Syntax

`a = levinson(r)a = levinson(r,n)[a,e] = levinson(r,n)[a,e,k] = levinson(r,n)`

Example

```Autoregressive Process CoefficientsOpen This Example
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```