function ar1(a,lambda,N)
% function ar1(a,lambda,N)
%
% Calcolo della covarianza e dello spettro di un processo AR(1)
% y(t) = a y(t-1) + w(t), w(·)~WN(0,lambda^2)
% Confronto con le grandezze campionarie calcolate su una
% realizzazione di N dati del processo

if lambda <= 0
   disp('Il parametro lambda deve essere positivo')
   return
end;

eta = randn(N,1)*lambda;
v = zeros(N,1);
for t=2:N
   v(t) = a*v(t-1)+eta(t);
end;

figure(1)
plot(v)
title('Realizzazione del processo AR(1)')

figure(2)
gamma0 = (lambda^2)/(1-a*a);
gamma = (a.^abs([-10:10]))*gamma0;

gamma_camp = covf(v-mean(v),11);
gamma_camp0 = gamma_camp(1);
gamma_camp = [gamma_camp(11:-1:2) gamma_camp];

plot(-10:10,gamma/gamma0,-10:10,gamma/gamma0,'ob'),hold on,grid
plot(-10:10,gamma_camp/gamma_camp0,'xr'),hold off,grid
title('Covarianza (correlazione) normalizzata del processo AR(1)')
xlabel('covarianza = blu, covarianza campionaria = rosso')

figure(3)
G=spa(v-mean(v));
plot([-G(end:-1:2,1)' G(2:end,1)'],[G(end:-1:2,2)' G(2:end,2)'],'r')
hold on
w = -pi:0.01:pi;
plot(w,(lambda^2)./(1+a*a-2*a*cos(w)),'b')
ax = axis;
axis([-pi pi 0 ax(4)])
title('Densità spettrale di potenza del processo AR(1)')
xlabel('spettro = blu, spettro campionario = rosso')
text(-3.25,-0.075*ax(4),'-pi')
text(3.14,-0.075*ax(4),'pi')
hold off
 