Main Content


Autoregressive all-pole model parameters — Yule-Walker method



a = aryule(x,p) returns the normalized autoregressive (AR) parameters corresponding to a model of order p for the input array x.


[a,e,rc] = aryule(x,p) also returns the estimated variance, e, of the white noise input and the reflection coefficients, rc.


collapse all

Use a vector of polynomial coefficients to generate an AR(4) process by filtering 1024 samples of white noise. Reset the random number generator for reproducible results. Use the Yule-Walker method to estimate the coefficients.

rng default

A = [1 -2.7607 3.8106 -2.6535 0.9238];

y = filter(1,A,0.2*randn(1024,1));

arcoeffs = aryule(y,4)
arcoeffs = 1×5

    1.0000   -2.7262    3.7296   -2.5753    0.8927

Generate 50 realizations of the process, changing each time the variance of the input noise. Compare the Yule-Walker-estimated variances to the actual values.

nrealiz = 50;

noisestdz = rand(1,nrealiz)+0.5;

randnoise = randn(1024,nrealiz);
noisevar = zeros(1,nrealiz);

for k = 1:nrealiz
    y = filter(1,A,noisestdz(k) * randnoise(:,k));
    [arcoeffs,noisevar(k)] = aryule(y,4);

title('Noise Variance')

Repeat the procedure using the function's multichannel syntax.

Y = filter(1,A,noisestdz.*randnoise);

[coeffs,variances] = aryule(Y,4);

hold on
hold off
legend('Single channel loop','Multichannel','Location','best')

Use a vector of polynomial coefficients to generate an AR(2) process by filtering 1024 samples of white noise. Reset the random number generator for reproducible results.

rng default

y = filter(1,[1 -0.75 0.5],0.2*randn(1024,1));

Use the Yule-Walker method to fit an AR(10) model to the process. Output and plot the reflection coefficients. Only the first two coefficients lie outside the 95% confidence bounds, indicating that an AR(10) model significantly overestimates the time dependence in the data. See AR Order Selection with Partial Autocorrelation Sequence for more details.

[ar,nvar,rc] = aryule(y,10);

xlim([0 11])
conf95 = sqrt(2)*erfinv(0.95)/sqrt(1024);
[X,Y] = ndgrid(xlim,conf95*[-1 1]);
hold on
hold off
title('Reflection Coefficients')

Input Arguments

collapse all

Input array, specified as a vector or matrix.

Example: filter(1,[1 -0.75 0.5],0.2*randn(1024,1)) specifies a second-order autoregressive process.

Data Types: single | double
Complex Number Support: Yes

Model order, specified as a positive integer scalar. p must be less than the number of elements or rows of x.

Data Types: single | double

Output Arguments

collapse all

Normalized autoregressive parameters, returned as a vector or matrix. If x is a matrix, then each row of a corresponds to a column of x. a has p + 1 columns and contains the AR system parameters, A(z), in descending powers of z.

White noise input variance, returned as a scalar or row vector. If x is a matrix, then each element of e corresponds to a column of x.

Reflection coefficients, returned as a column vector or matrix. If x is a matrix, then each column of rc corresponds to a column of x. rc has p rows.

More About

collapse all

AR(p) Model

In an AR model of order p, the current output is a linear combination of the past p outputs plus a white noise input.

The weights on the p past outputs minimize the mean squared prediction error of the autoregression. If y(n) is the current value of the output and x(n) is a zero-mean white noise input, the AR(p) model is


Reflection Coefficients

The reflection coefficients are the partial autocorrelation coefficients scaled by –1.

The reflection coefficients indicate the time dependence between y(n) and y(n – k) after subtracting the prediction based on the intervening k – 1 time steps.


aryule uses the Levinson-Durbin recursion on the biased estimate of the sample autocorrelation sequence to compute the parameters.


[1] Hayes, Monson H. Statistical Digital Signal Processing and Modeling. New York: John Wiley & Sons, 1996.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Version History

Introduced before R2006a