You are here : matlabSignal Processingarcov

# arcov() - Signal Processing

`a = arcov(x,p) uses the covariance method to fit a pth-order autoregressive (AR) model to the input signal, x, which is assumed to be the output of an AR system driven by white noise.This method minimizes the forward prediction error in the least-squares sense.The output array, a, contains normalized estimates of the AR system parameters, A(z), in descending powers of z. a has pÂ +Â 1 columns.If x is a vector, then a is a row vector.If a is a matrix, then the coefficients along the nth row of a model the nth column of x.[a,e] = arcov(x,p) returns the variance estimate, e, of the white noise input to the AR model.`

### Syntax

```a = arcov(x,p)
[a,e] = arcov(x,p)```

### Example

```%Estimation Using the Covariance Method
%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 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 = arcov(y,4)

arcoeffs =

1.0000   -2.7746    3.8419   -2.6857    0.9367

%Generate 50 realizations of the process, changing each time the variance of the input noise.
%Compare the covariance-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)] = arcov(y,4);
end

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

%Repeat the procedure using arcov's multichannel syntax.

realiz = bsxfun(@times,noisestdz,randnoise);

Y = filter(1,A,realiz);

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

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

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