Tema 5: Misura di un segnale costante in rumore Significato della ddp a priori versus la ddp a posteriori Modello scalare dell’osservato: Yi S Wi , i 1,2, Modello vettoriale dell’osservato: y N mY , CY ,N campioni di rumore segnale costante aleatorio Wi N 0, W2 , IID S N S , S2 y [Y1 Y2 y S1 w 1 [11 1] W WN ]T mY S 1 Matrice di covarianza degli osservati: CY E yy T mY mYT S2 11T W2 I Varianza degli osservati: Y2 E Yk2 Y2 S2 W2 2 2 S T w [W1 W2 Vettore valor medio degli osservati: YN ]T Segnale costante in rumore: tre realizzzioni N.B. Vogliamo misurare il valore s assunto da S nella particolare realizzazione che viene osservata!! 20 s=12.8 18 16 20 14 y (t ) s w(t ) 16 12 s=9.4 volt 18 14 8 12 volt 10 6 10 4 8 2 6 0 0 20 40 60 80 100 (msec) 120 140 160 180 60 80 100 (msec) 120 140 160 180 200 4 2 20 0 0 20 40 60 80 100 (msec) 120 140 160 180 200 s=7.99 18 16 yi y (iT ) s w(iT ) 12 ,N volt i 1, 2, 14 10 8 2 2 4 1 SNR 0 dB S W S 10 N 10 6 4 2 0 0 20 40 200 File.m: segncost_realiz.m % Grafico di una realizzazione del segnale osservato % “tempo-continuo” e tempo-discreto clc clear N=10; sc=20; % numero di campioni prelevati % fattore di sovracampionamento per simulare il "tempo continuo" etas=10 sig2s=4 sig2w=4 % valor medio del segnale costante % varianza del segnale costante % varianza del rumore s=randn(1,1)*sqrt(sig2s)+etas; % genera un valore di S con ddp Gaussiana wtc=randn(N*sc,1)*sqrt(sig2w); ytc=s+wtc; % genera il rumore "tempo continuo" con ddp Gaussiana % calcola il segnale "tempo continuo" totale y=ytc(1:sc:N*sc); % estrae gli N campioni osservati plot(ytc,'r') xlabel('(msec)') % traccia il grafico del segnale totale “tempo-continuo“ % scala temporale – esemplificativa %(tempo di campionamento= sc msec) ylabel('volt') axis([0 N*sc etas-5*sqrt(sig2s) etas+5*sqrt(sig2s)]) hold on; plot([0 N*sc],[s s],'k') % traccia il grafico del livello costante; hold on; stem([1:sc:N*sc],y) % traccia i campioni osservati Misura di un segnale costante in rumore Errore della misura Algoritmo di misura: Sˆ f Y1 , Y2 , , YN S Sˆ Indici di qualità dell’algoritmo: valore medio e potenza media dell’errore Significato della ddp a priori: Ho a disposizione solo fS(s), ovvero nessun osservato; cosa possiamo fare? m E E S Sˆ 2 Sˆ c S c Sˆ arg min E S c c Sˆ S m E E S S 0 P E 2 E S 2 2 S S P E 2 E S Sˆ Sˆ S Significato della ddp a posteriori: Avendo a disposizione N osservati, cosa possiamo fare per migliorare l’accuratezza della misura? 2 Misura del segnale costante in rumore Algoritmo A: media campionaria Algoritmo B: minimo errore quadratico medio N 1 N 1 ˆ Sb Y S i 1 N N i 1 1 N N 1 1 Sˆa Yi 1T y N i 1 N Valore medio dell’errore di misura: m a mb 0 Potenza media statistica dell’errore di misura: P a W2 N 1 T 1 1 y S N 1 N 2 N 1 2 , 1 N 1 1 N S W N W2 P P 1 N N b a Nota bene: entrambi sono combinazione lineare di v.a. Gaussiane, quindi entrambe sono v.a. Gaussiane Algoritmo B: calcolo dell’errore quadratico medio S Y N S Y , S2 Y Potenza media statistica dell’errore di misura: S Y Sˆb E S Y S Y 1 1 1T y S N 1 N P b E S Sˆb 2 SY W2 N E S E S 2 2 EY ES Y S S Y SY 2 2 S ,Y SY W 2 E P a Y SY N 2 2 1 2 , 1 1 N S Nota bene: P P P b a a W Misura della matrice di covarianza 1 CY E (y mY )(y mY )T S2 11T W2 I S2 W2 11T 1 1 Misura della matrice di covarianza del vettore degli osservati, utilizzando K realizzazioni del vettore y 1 K 1 K T T ˆ ˆ Ym ˆ Y , dove m ˆ Y yi CY y i y i m K i 1 K i 1 Misura_mat_cov = I Y2C i j 1 Ci , j 1 i j Coeff. di correlazione tra Yi e Yj Valore effettivo: S 10, 8.0342 3.9898 4.1356 4.1333 8 2 2 4 3.9898 8.0060 3.9277 4.0460 4 8 4 4 [ 1] N 4, K 5000 4.1356 3.9277 8.1985 4.1425 4 4 8 4 4.1333 4.0460 4.1425 8.0706 4 4 4 8 S W 4 4 4 File.m: segncost_matcov.m % Misura della matrice di covarianza degli osservati di segnale costante in rumore clc clear N=4; % numero di campioni K=5000; % numero di esperimenti (prove) Monte Carlo etas=10 sig2s=4 sig2w=4 % valor medio del segnale costante % varianza del segnale costante % varianza del rumore s=randn(1,K)*sqrt(sig2s)+etas; w=randn(N,K)*sqrt(sig2w); % % % % genera ne valori di segnale costante con ddp Gaussiana genera ne vettori di rumore con ddp Gaussiana, organizzati in una matrice calcola ne vettori osservati, organizzati in una matrice valvettmedio=mean(y.'); y=y-repmat(valvettmedio.',1,K); valmatcov=y*y.'/ne; % % % % calcola il vettor valor medio degli osservati sottrae dagli osservati il vettore valor medio calcola la matrice di covarianza degli osservati, sfruttando la loro organizzazione in matrice valmatcov % stampa la valutazione della matrice di covarianza % degli osservati y=repmat(s,N,1)+w; Simulazione stimatori e istogramma degli errori Wi N 0, W2 , IID y S1 w S N S , S2 2 N 2 , 1 N S 1 Sˆa 1T y N Sˆb Sˆa 1 S 1 N W P a W2 N , P b P a - Generare K=50000 realizzazioni del vettore osservato Y di N=2 campioni, per S 10, 2 2 4 [istruzioni utili: randn, repmat] S W - Implementare i due stimatori, calcolare e visualizzare l’istogramma normalizzato dei loro errori di stima e confrontarli con gli andamenti teorici (ddp Gaussiane a valor medio nullo e varianza P ) [istruzioni utili: mean, hist, bar] Istogrammi (normalizzati) degli errori stimatore a S 10 , 2 2 4 ( 1) 0.4 S 0.35 N 2 0.3 W K=50000 realizzazioni ddp 0.25 0.2 0.15 stimatore b 0.1 0.4 0.05 0.35 0 -6 -4 -2 0 errore 2 4 0.3 6 ddp 0.25 1 Sˆa 1T y N 0.2 0.15 0.1 1 Sˆb 1T y S N 1 N 0.05 0 -6 -4 -2 0 errore 2 4 6 File.m: stimesegncost_istog.m % Calcolo istogrammi degli errori degli algoritmi di misura del segnale costante clc clear N=2; % numero di campioni K=50000; % numero di esperimenti (prove) Monte Carlo etas=10 sig2s=4 sig2w=4 % valor medio del segnale costante % varianza del segnale costante % varianza del rumore g=sig2s/sig2w; % gamma s=randn(1,K)*sqrt(sig2s)+etas; % genera K valori di segnale costante con ddp Gaussiana w=randn(N,K)*sqrt(sig2w); % genera K vettori di rumore con ddp Gaussiana, % organizzati in una matrice y=repmat(s,N,1)+w; % calcola K vettori osservati, organizzati in una matrice sa=mean(y); % calcola K misure di tipo a sb=g*N/(g*N+1)*sa+etas/(g*N+1); % calcola K misure di tipo b esa=sa-s; esb=sb-s; % calcola i K errori delle misure di tipo a % calcola i K errori delle misure di tipo b [ista,aa]=hist(esa,50); [istb,ab]=hist(esb,50); % calcola l'istogramma degli errori delle misure di tipo a % calcola l'istogramma degli errori delle misure di tipo b figure bar(aa,ista/K/(aa(2)-aa(1))) xlabel('errore') ylabel('ddp') title('a') figure bar(ab,istb/K/(ab(2)-ab(1))) xlabel('errore') ylabel('ddp') title('b') % esegue i grafici degli istogrammi normalizzati Curve di prestazioni degli algoritmi di misura P E 2 versus N versus e - Ripetere la simulazione per un numero di campioni N variabile da 2 a 50, con 1000 realizzazioni, per S 10, 2 2 4, quindi valutare e visualizzare S W la potenza media degli errori P di entrambi gli algoritmi al variare di N [istruzioni utili: randn, repmat, for, mean, std, plot] - Ripetere la simulazione per 2 / 2 variabile, per S 10, 2 4 S W W 2 [1, 20] ; valutare e visualizzare la potenza media degli errori P di entrambi S gli algoritmi al variare di [istruzioni utili: randn, repmat, for, mean, std, plot] Prestazioni degli algoritmi in funzione di N S 10 , 2 2 4 S W 20 stimatore a stimatore b 18 K=1000 realizzazioni 16 14 medie 12 2 stimatore a stimatore b 10 1.8 8 1.6 6 1.4 2 0 0 5 10 15 20 25 30 num. campioni 35 40 45 • Il valore medio dell’errore è nullo per entrambi gli stimatori 50 potenze errore 4 1.2 P versus N 1 0.8 0.6 0.4 0.2 0 0 5 10 15 20 25 30 num. campioni 35 40 45 50 • La precisione della misura migliora con il numero N di campioni osservati • Il vantaggio dovuto alla conoscenza a priori si riduce all’aumentare di N Prestazioni degli algoritmi in funzione di N 2, S 10 , W2 4 20 stimatore a stimatore b 18 K=1000 realizzazioni 16 2 / 2 14 S W S2 W2 medie 12 10 8 sigw2=4 2.2 6 4 2 2 1.8 0.5 1 1.5 2 2.5 3 gamma 3.5 4 4.5 5 potenze errore 0 • Il valore medio dell’errore è nullo per entrambi gli stimatori stimatore a stimatore b 1.6 1.4 1.2 P versus 1 0.8 0.6 • Al crescere di per a priori si riduce 0 0.5 1 1.5 2 2.5 gamma 3 3.5 4 4.5 5 2 ed N fissati, l’utilità delle informazioni W File.m: stimesegncost_N.m % Calcolo della media e della varianza dell’errore dei due algoritmi al variare del numero di campioni N clc clear Nmax=50; % numero massimo di campioni ne=1000; % numero di esperimenti (prove) Monte Carlo etas=10 % valor medio del segnale costante sig2s=4 % varianza del segnale costante sig2w=4 % varianza del rumore g=sig2s/sig2w; % gamma s=randn(1,ne)*sqrt(sig2s)+etas; % genera ne valori di segnale costante con d.d.p. Gaussiana w=randn(Nmax,ne)*sqrt(sig2w); % genera ne vettori di rumore con d.d.p. Gaussiana, % organizzati in una matrice y=repmat(s,Nmax,1)+w; % calcola ne vettori osservati, organizzati in una matrice for indice=1:Nmax/2, N=indice*2; % per numero di campioni N variabile a passi di 2: sa=mean(y(1:N,:)); % calcola ne stime di tipo a con numero di campioni sb=g*N/(g*N+1)*sa+etas/(g*N+1); % calcola ne stime di tipo b con numero di campioni N esa=sa-s; esb=sb-s; msa(indice)=mean(sa); vesa(indice)=mean(esa.^2); msb(indice)=mean(sb); vesb(indice)=mean(esb.^2); end % % % % % % calcola calcola calcola calcola calcola calcola a=2*[1:Nmax/2]; figure plot(a,msa,'r*',a,msb,'b*') xlabel('num. campioni') ylabel('medie') legend('stimatore a','stimatore b') axis([0 Nmax 0 2*etas]) figure plot(a,vesa,'r*',a,vesb,'b*') hold on; plot(a,sig2w./a,'r',a,sig2w*g./(g*a+1),'b') xlabel('num. campioni') ylabel('varianze') legend('stimatore a','stimatore b') gli ne errori delle stime di tipo a gli ne errori delle stime di tipo b media delle stime di tipo a potenza errore delle stime di tipo a media delle stime di tipo b potenza errore delle stime di tipo b % esegue i grafici % anche delle varianze teoriche File.m: stimesegncost_gamma.m % Calcolo della media e della varianza dell’errore dei due algoritmi al variare del rapporto gamma clc clear N=2; % numero di campioni ne=10000; % numero di esperimenti (prove) Monte Carlo etas=10 % valor medio del segnale costante sig2si=1 % varianza iniziale del segnale costante sig2w=4 % varianza del rumore for indice=1:20, sig2s=sig2si*indice; g=sig2s/sig2w; % per rapporto gamma variabile: % gamma s=randn(1,ne)*sqrt(sig2s)+etas; % genera ne valori di segnale costante con d.d.p. Gaussiana w=randn(N,ne)*sqrt(sig2w); % genera ne vettori di rumore con d.d.p. Gaussiana, % organizzati in una matrice y=repmat(s,N,1)+w; % calcola ne vettori osservati, organizzati in una matrice sa=mean(y); % calcola ne stime di tipo a sb=g*N/(g*N+1)*sa+etas/(g*N+1); % calcola ne stime di tipo b esa=sa-s; esb=sb-s; msa(indice)=mean(sa); vesa(indice)=mean(esa.^2);; msb(indice)=mean(sb); vesb(indice)=mean(esb.^2);; end % % % % % % calcola calcola calcola calcola calcola calcola gli ne errori delle stime di tipo a gli ne errori delle stime di tipo b media delle stime di tipo a potenza errore delle stime di tipo a media delle stime di tipo b potenza errore delle stime di tipo b a=sig2si*[1:20]/sig2w; % esegue i grafici figure plot(a,msa,'r*',a,msb,'b*') xlabel('gamma') ylabel('medie') legend('stimatore a','stimatore b') axis([min(a) max(a) 0 2*etas]) figure plot(a,vesa,'r*',a,vesb,'b*') hold on; plot([a(1) a(20)],[sig2w/N sig2w/N],'r',a,sig2w*a./(a*N+1),'b') % anche delle varianze teoriche xlabel('gamma') ylabel('varianze') legend('stimatore a','stimatore b') title('sigw^2=4')