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);
end
plot(noisestdz.^2,noisevar,'*')
title('Noise Variance')
xlabel('Input')
ylabel('Estimated')
Repeat the procedure using the function's multichannel syntax.
Y = filter(1,A,noisestdz.*randnoise);
[coeffs,variances] = aryule(Y,4);
hold on
plot(noisestdz.^2,variances,'o')
hold off
legend('Single channel loop','Multichannel','Location','best')