You are here : matlabSignal Processingaryule

aryule() - Signal Processing

```a = aryule(x,p) returns
the normalized autoregressive (AR) parameters corresponding to a model
of order p for the input array, x.
If x is a vector, then the output array, a,
is a row vector. If x is a matrix, then the parameters
along the nth row of a model
the nth column of x. a has p + 1 columns. p must
be less than the number of elements (or rows) of x.[a,e] = aryule(x,p) returns
the estimated variance, e, of the white noise input.[a,e,rc] = aryule(x,p) returns
the reflection coefficients in rc.```

Syntax

`a = aryule(x,p)[a,e] = aryule(x,p)[a,e,rc] = aryule(x,p)`

Example

```Parameter Estimation Using the Yule-Walker MethodOpen This ExampleUse 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.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);

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

plot(noisestdz.^2,noisevar,'*')
title('Noise Variance')
xlabel('Input')
ylabel('Estimated')

Repeat the procedure using aryule's multichannel syntax.realiz = bsxfun(@times,noisestdz,randnoise);

Y = filter(1,A,realiz);

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

hold on
plot(noisestdz.^2,variances,'o')

q = legend('Single channel loop','Multichannel');
q.Location = 'best';

Estimate Model order Using Decay of Reflection CoefficientsOpen This Example
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.[ar_coeffs,NoiseVariance,reflect_coeffs] = aryule(y,10);

stem(reflect_coeffs)
axis([-0.05 10.5 -1 1])
title('Reflection Coefficients by Lag')

The reflection coefficients decay to zero after lag 2, which indicates that an AR(10) model significantly overestimates the time dependence in the data.```