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  mb  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')
Scarica

Esercitazione 5 del corso di Teoria dei Fenomeni Aleatori Prof. Gini