3 Cenni di teoria della probabilità: la funzione densità di probabilità, il valor medio e la deviazione standard Matlab consente di calcolare efficacemente i parametri valor medio e deviazione standard di una variabile aleatoria, oltre che ottenere la funzione densità di probabilità. 1 La funzione densità di probabilità Le funzioni x=rand(size(t)) oppure x=randn(size(t)), con t definito nella maniera ormai usuale : t0=0.01 N=100000 t=(-N/2:N/2-1)*t0 assumono valori aleatori per ogni valore di t. Nel primo caso x varia uniformemente tra 0 e 1. Nel secondo caso gli estremi di variabilità di x sono –inf e +inf e la variabile ha densita’ di probabilita’ gaussiana, con media zero e varianza unitaria. L’interesse, nei confronti di queste funzioni, è rivolto a definire la probabilità che il valore di x sia compreso in un intervallo definito, interno al campo di esistenza. A questo proposito l’utilizzo della function hist permette di avviare un procedimento che consente di calcolare la funzione densità di probabilità (pdf) di x. [n_casi,x_]=hist(x,n) restituisce : un vettore x_ costituito da n elementi che suddividono in modo uniforme l’intervallo di esistenza degli elementi di x.(massimo di x –minimo di x). Nel caso di x=rand(size(t)), l’intervallo di esistenza di x è tra 0 ed 1; questo intervallo viene suddiviso in n intervalli uguali contigui; gli elementi di x_sono i punti centrali di questi intervalli. un vettore n_casi che definisce, in corrispondenza di ciascuno degli intervalli e degli elementi di x_, il numero di volte che x assume un valore interno all’intervallo stesso. Se si divide il vettore n_casi per N ( numero totale di casi) si ottiene, per ogni intervallo, la frequenza relativa del fenomeno. Questo valore di frequenza relativa, per N tendenta all’infinito, uguaglia la probabilità che la variabile x assuma valori interni all’intervallo definito. Si noti come, per N tendente ad infinito, la grandezza freq risulti indipendente da N; freq=n_casi/N freq è’ però ancora dipendente dall’ampiezza dell’intervallo e quindi da n. L’ampiezza dell’intervallo si ottiene come differenza tra due elementi contigui di x_: passo=x_(1,2)-x_(1,1) La funzione ddp=freq/passo, tende ad essere indipendente da passo, quando questo valore tende a 0 (cioè n tende ad infinito); essa è definita densità di probabilità. La funzione densità di probabilità ha queste caratteristiche: l’integrale (in x) tra i due estremi di esistenza di x è pari ad 1 l’integrale tra due valori x1 e x2 dà come risultato la probabilità che x sia compreso tra x1 e x2. Con valori abbastanza elevati di N e n, si ottiene una buona approssimazione alla densita’ di probabilita’. La function pdf1 Dati di ingresso: x n (numero di intervalli) o n_( vettore dei punti centrali degli intervalli, in numero di n) in questo caso x_=n_ jplot : se assume valore 1, viene visulalizzata la funzione pdf_x Dati in uscita ddp x_. File pdf1.m function [ddp,x_]=pdf1(x,n_,jplot) N=length(x); [ncasi,xx_]=hist(x,n_); passo=xx_(2)-xx_(1); freq=ncasi/N; denx=freq/passo; if length(n_)>1 if max(n_)>=max(x) & min(n_)<=min(x) ddp=denx x_=xx_ else disp('errore in n_; non comprende l''intervallo in cui esiste x') ddp=100; x_=xx_; end end if length(n_)==1 d=max(xx_)-min(xx_); x_=min(xx_)-d*0.2:passo:max(xx_)+d*0.2; denxx=zeros(size(x_)); I=find(x_<=min(xx_)); denxx(I)=0; Imax=max(I); II=find(x_>=max(xx_)); denxx(II)=0; IImin=min(II); denxx(Imax+1:1:IImin)=denx(1:1:length(denx)); ddp=denxx; end if jplot==1 plot(x_,real(ddp)) axis([min(x_) max(x_) 0 1.6*max(ddp)]) end return le variabili rilasciate da pdf1 sono, per una variabile aleatoria RAND e con n=10: ddp = (ordinata delle figure : densità di probabilità) Columns 1 through 7 0 0 1.0003 0.9992 1.0011 1.0007 1.0035 Columns 8 through 13 1.0022 0.9979 0.9989 0.9983 0.9981 0 x_ = (ascissa delle figure, punti centrali degli intervalli di accumulo delle probabilità) Columns 1 through 7 -0.1300 -0.0300 0.0700 0.1700 0.2700 0.3700 0.8700 0.9700 1.0700 Columns 8 through 13 0.5700 0.6700 0.7700 0.4700 Densità di probabilità di rand 1.4 densità di probabilità di rand 1.2 1 0.8 0.6 0.4 0.2 0 -0.2 0 10000 elementi: 1000000 elementi 0.2 0.4 0.6 linea blu linea rossa 0.8 1 1.2 Densità di probabilità di randn 0.45 densità di probabilità di randn 0.4 0.35 0.3 0.25 0.2 0.15 0.1 0.05 0 -8 -6 10000 elementi 1000000elementi -4 -2 0 linea blu linea rossa 2 4 6 8 2 Funzioni di Matlab che calcolano il valore medio e la varianza di x. x_medio=mean(x) std_x=std(x) . Le stesse grandezze possono essere ottenute mediante l’ operazione di integrazione del prodotto della funzione di densità di probabilità per x, o per x^2, rispettivamente. 3 Densità di probabilità di funzioni di variabili aleatorie Per calcolare la densita’ di probabilita’ della somma di due varibili aleatorie x e y, con Matlab, possedendo i due vettori x e y da sommare, si ottiene z=x+y; successivamente si calcola pdf_z. Analogamente si può procedere per il calcolo della densità di probabilità di y=f(x) (densità di probabilità di funzione di variabile aleatoria). La densità di probabilità della somma di due variabili aleatorie indipendenti si ottiene, analiticamente, convolvendo le densità di probabilità delle due variabili. Lo stesso risultato si ottiene ovviamente con il seguente procedimento, applicando le proprieta’ delle trasformate: 1. calcolo delle trasformate di Fourier delle densità di probabilità delle variabili da sommare 2. prodotto delle due trasformate 3. antitrasformazione di Fourier del prodotto Casi di interesse: somma di 2 variabili aleatorie indipendenti , con densità uniforme 1.4 densità di x e x+y=z 1.2 1 0.8 0.6 0.4 0.2 0 -0.5 densità di x e y densità di z=x+y 0 0.5 1 linea blu linea rossa 1.5 2 2.5 Somma di due variabili aleatorie densità di x e y densità di z=x+y densità normale linea blu linea rossa 0.45 densità di probabilità di z=x+y e di x 0.4 0.35 0.3 0.25 0.2 0.15 0.1 0.05 0 -10 -8 -6 -4 -2 0 2 4 6 8 10 somma di una costante e di una variabile aleatoria con densità normale; calcolo della probabilità di x<=0 x=randn(1,N) linea blu z=1+x linea rossa 0.5 densità di 1+randn 0.45 0.4 0.35 0.3 0.25 0.2 0.15 0.1 0.05 0 -5 -4 -3 -2 -1 0 1 2 Il calcolo è stato eseguito con le seguenti istruzioni; N=1000000 x=randn(1,N); [ddp_x,x_]=pdf1(x,100,1); y=randn(1,N); z=1+x; [ddp_z,z_]=pdf1(z,100,1); % calcolo della probabilità z<=0 % =area sottesa dalla linea rossa tra –infinito e 0. I=find(z_<=0) Int=sum(ddp_z(I))*passo(z_) Il risultato dell’integrazione è Int = 0.1610 3 4 5 logaritmo di una variabile aleatoria con densità uniforme. Densità di x=rand(1,N) z=-log(x) linea blu linea rossa 2.5 densità di x= RAND e di -log(x) 2 1.5 1 0.5 0 -2 4 -1 0 1 2 3 4 5 6 7 Potenza Mediante i comandi mean e std si può calcolare la potenza di x (variabile aleatoria o realizzazione di un processo casuale, cioe’ un segnale con potenza finita) Potenza_x=mean(x)^2+std(x)^2. Definire un vettore frequenza f tra –50hz e +50HZ- PASSOF e con PASSOF =0.1HZ Definire la funzione Filtro come passabanda centrato a 10 hz(+-) e ampiezza di banda 5 hz usando trarect(t, media , durata)