MATLAB: w=randn(N,1) x=filter(b,a,w) Processi Autoregressivi AR(1) Filtro IIR di ordine 1 White Gaussian Noise (WGN) AR(1): eq. alle differenze ricorsiva di ordine 1 MATLAB: w=randn(N,1) x=filter(b,a,w)
ACF e PSD di un processo AR(1) passa-basso
Periodogramma del processo di ingresso WGN
Generazione processo AR(1) Generare e graficare tre realizzazioni di un p.a. AR(1) Gaussiano. Parametri: Intervallo temporale discreto di osservazione: N=128 Potenza del processo: Parametro AR(1): [istruzioni utili: randn, for, filter, subplot, stem] - Rappresentare i grafici della funzione di autocorrelazione e della densità spettrale di potenza.
Esempio di risultati r=0.1
Esempio di risultati r=0.5
Esempio di risultati r=0.9
Esempio di risultati r=-0.9
Confronto ….. r=0.1 r=0.9
Funzione di autocorrelazione (1/2) = 0.5
Funzione di autocorrelazione (2/2) = 0.9 = - 0.9
Densità spettrale di potenza (1/2)
Densità spettrale di potenza (2/2) = 0.9 = - 0.9
Esempio di risultati (1/2) % generazione realizzazioni p.a. AR(1) Gaussiano di potenza unitaria % function [x] = genproar1(Nc,nr,a) % in: numero di campioni, Nc; % numero di realizzazioni, nr; % coefficiente di reazione, a; % out: matrice di realizzazioni, una per riga; % uscita su video di grafico delle nr realizzazioni. sigmaw=sqrt(1-a^2); % calcola la deviazione standard per il processo di forzamento; w=sigmaw*randn(nr,Nc); % genera nr realiz. di durata Nc del processo di forzamento; for i=1:nr; x(i,:)=filter(1,[1 -a],w(i,:),0); % filtraggio IIR del primo ordine di ogni realiz.; end figure; % grafica le nr realizzazioni del p.a. AR(1); subplot(nr,1,i) stem(x(i,:)) xlabel(‘n’) ylabel(‘x(n)’) axis([0 Nc -2.5 2.5])
Esempio di risultati (2/2) % Funzione di autocorrelazione m=1:Nc; sigmax=sqrt(sigmaw^2/(1-a^2)); Rx=sigmax^2*a.^m; figure(2); stem(Rx); axis([0 Nc -sigmax^2 sigmax^2]) grid on xlabel('m') ylabel ('Rx(m)') title('Funzione di autocorrelazione') % Densità spettrale di potenza aa=[0.1 0.2 0.5] for n=1:3 Nf=1024; Df=1/Nf; f=-0.5:Df:0.5-Df; Sx=sigmaw^2./(1+aa(n)^2-2*aa(n)*cos(2*pi*f)); plot(f,Sx); hold on axis([-0.5 0.5 0 max(Sx)]) xlabel('frequenza') ylabel ('Sx(f)') title('Densità Spettrale di Potenza') end;
Periodogramma mediato di processo AR(1) Generare N campioni di una realizzazione di un p.a. AR(1) Gaussiano, calcolare e graficare il periodogramma “mediato” su M segmenti dati, e confrontarlo con la PSD teorica Parametri: Intervallo temporale discreto di osservazione: N=2048 Potenza del processo: Parametro AR(1): Numero di segmenti: M=16 (ciascuno di L=N/M=128 campioni) [istruzioni utili: randn, filter, fft, fftshift, abs, mean]
Periodogramma: esempio di risultati (1/3) = 0.5
Periodogramma: esempio di risultati (2/3) = 0.9
Periodogramma: esempio di risultati (3/3) % Stima spettrale AR(1) clear all close all clc N=2048; M=16; L=N/M; sigmax=1; a=0.5; sigmaw=sigmax*sqrt(1-a^2); w=sigmaw*randn(1,N); x=filter(1,[1 -a],w,0); Nfft=1024; Df=1/Nfft; f=[-0.5:Df:0.5-Df]; % periodogramma TDFx=fftshift(fft(x,Nfft)); modx=abs(TDFx); modx2=modx.^2; period=modx2./N; figure(1); plot(f,10*Log10(period)); xlabel('frequenza'); ylabel('DSP stimata'); grid on; title('periodogramma'); % periodogramma mediato for i=1:M TDFxmed(i,:)=fftshift(fft(x(((i-1)*L+1):i*L),Nfft)); modxmed=abs(TDFxmed); modx2med=modxmed.^2; period_med=modx2med./N; end; period_fin=mean(period_med,1); figure(2); plot(f,10*Log10(period_fin)); xlabel('frequenza'); ylabel('DSP stimata'); grid on; title('periodogramma mediato su L blocchi');