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 modified covariance 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 = armcov(y,4)
arcoeffs = 1×5
1.0000 -2.7741 3.8404 -2.6841 0.9360
Generate 50 realizations of the process, changing each time the variance of the input noise. Compare the modified-covariance-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)] = armcov(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] = armcov(Y,4);
hold on
plot(noisestdz.^2,variances,'o')
hold off
legend('Single channel loop','Multichannel','Location',"best")