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.
Output / Return Value
Limitations
Alternatives / See Also
Reference