bozza bozza bozza Filtraggio dei dati In molte applicazioni è necessario rimuovere da una serie di dati il “rumore” che ad essi si sovrappone. Questo al fine ad esempio di estrarre il segnale “vero” da una serie di misure sperimentali, o ad esempio al fine di smorzare le fluttuazioni contenute nei dati delineandone un andamento più regolare e interpretabile. Vi è una vasta letteratura sul problema della noise-reduction e sono disponibili numerose tecniche al riguardo. Uno dei filtri più semplici è il cosiddetto filtro a media mobile. Ad esempio esse è frequentemente impiegato nell’analisi dei dati relativi all’andamento dei mercati finanziari. 53 di Fabio Bozzoli bozza bozza bozza Filtro a media mobile Mediante questa tecnica si sostituisce al valore di ogni campione la media di campioni vicini. E’ una tecnica matematica utilizzata per smussare le fluttuazioni nel segnale. Si dice "mobile" perché il numero degli elementi considerati è fisso (finestra), ma l'intervallo di tempo avanza. y(i) = 1 (x(i + N ) + x(i + N −1) + ...+ x(i − n)) 2N + 1 In cui x è il segnale in ingresso e y è il segnale filtrato e 2N+1 è la dimesnione della finestra. Ad esempio con un filtro a media mobile con una finestra corrispondente a 5 campioni si ha y (1) = x(1) y (2) = (x(1) + x(2) + x(3) ) / 3 y (3) = ( x(1) + x(2) + x(3) + x(4) + x(5) ) / 5 y (4) = (x(2) + x(3) + x(4) + x(5) + x(6) ) / 5 54 di Fabio Bozzoli bozza bozza bozza La funzione filter e filtfilt I filtri in Matlab operano su vettori. La funzione Y=filter(b,a,x) elabora i dati in ingresso, memorizzati nel vettore x mediante il filtro descritto dai vettori a e b generando l’output y. L’output y è una combinazione lineare di campioni precedenti e futuri e di output precedenti nel modo seguente a(1)y(n)=b(1)x(n)+b(2)x(n-1)+…+b(nb)x(n-nb+1)-a(2)y(n-1)-…-a(na)y(nna+1) Il filtro a media mobile con finestra m corrisponde a=1, b=[1/m 1/m,…..1/m] 55 di Fabio Bozzoli bozza bozza bozza Esempio: Per esempio un segnale campionato a 100Hz per 1 secondo, composto di due sinusoidi a 3 Hz e 40 Hz è: fs = 100; t = 0:1/fs:1; x = sin(2*pi*t*3)+.25*sin(2*pi*t*40); Un filtro a media mobile su 10 campioni è b=ones(1,10)/10; y = filter(b,1,x); Una versione ottimizzata di tale filtro è realizzata mediante la funzione filtfilt yy = filtfilt(b,1,x); Entrambe i filtri eliminano la componente a 40 Hz. 56 di Fabio Bozzoli bozza bozza bozza 1.5 1 y 0.5 0 -0.5 -1 -1.5 0 0.1 0.2 0.3 0.4 0.5 t (s) 0.6 0.7 0.8 0.9 1 57 di Fabio Bozzoli bozza bozza bozza Filtro a media mobile. In economia, per studiare l'andamento dei titoli di borsa, prendere delle decisioni sulla compravendita dei titoli, si usa il filtro a media mobile. Le medie mobili sono delle medie di prezzo “accomodate” periodicamente. La media mobile altro non è che una variabile ritardata di prezzo. Conseguentemente, la media mobile sarà sistematicamente al di sotto del prezzo in caso di trend crescente, al di sopra del prezzo in caso di trend decrescente. La media mobile aiuta quindi l’analista o il risparmiatore a disinteressarsi dei momenti di crollo o di impennata dei prezzi ed a concentrare l’attenzione sui “crossing-points” della media sulla serie dei prezzi, i quali costituiranno segnali di acquisto o di vendita. 58 di Fabio Bozzoli bozza bozza bozza Filtro a media mobile. La Media mobile serve per analizzare il trend di uno strumento finanziario. Secondo questo indicatore, il prezzo di un titolo che sia sopra la sua media mobile rappresenta un segnale d'acquisto mentre l'opposto costituisce un segnale di vendita. Molto diffusa è l'applicazione della doppia media mobile: in questo caso vi è un segnale d'acquisto quando la media mobile a breve si porta sopra quella di lungo periodo. Le più utilizzate sono le medie mobili a 20, 50 e 200 giorni. 59 di Fabio Bozzoli bozza bozza bozza Filtro a media mobile. I grafici nell'immagine qui sotto sono l'andamento giornaliero del NASDAC a un anno (in nero), la sua media mobile a 200 giorni, e la media mobile a 50 giorni. La figura più in basso riporta gli stessi grafici su 5 anni. Il criterio e` il seguente: effettuare scambi quando le due medie si incrociano, precisamente comprare quando il grafico arancione supera quello verde, vendere quando passa sotto. 60 di Fabio Bozzoli bozza bozza bozza 61 di Fabio Bozzoli bozza bozza bozza Esercizio Nel file Parmalat sono presenti le quotazioni del titolo per l’anno 1999 e 2000, valutare l’andamento del titolo con la media mobile a 20 e 200 giorni (finestra assimetrica). Valutare quando conviene comperare e quando vendere. Supponendo di avere un capitale iniziale di 10.000 euro, comprando e vendendo nei punti di incrocio quando avreste alla fine? 62 di Fabio Bozzoli bozza bozza bozza Esercizio II Nel file Titolifantasia sono presenti le quotazioni di titoli per l’anno 2006, valutare l’andamento dei titoli con la media mobile a 20 e 100 giorni (finestra non simmetrica). Valutare quando conviene comperare e quando vendere. Supponendo di avere un capitale iniziale di 10.000 euro, comprando e vendendo nei punti di incrocio quando avreste alla fine? 63 di Fabio Bozzoli bozza bozza bozza Soluzione [giorni,parmalat]=xlsread('parmalat') x=[giorni(:,3);giorni(:,4)] x=x' plot(x) y(1:20)=0 for k=21:685 y(k)=sum(x(k-19:k))/20 end z(1:200)=0 for k=201:685 z(k)=sum(x(k-199:k))/200 end hold on plot(y,'r') plot(z,'g') 64 di Fabio Bozzoli bozza bozza bozza Esercizio III Un segnale campionato a 1000 Hz per 10 secondi, è composto di tre sinusoidi della stessa ampiezza a 2 Hz e 20 Hz 200 Hz, determinate l’ampiezza del filto che: - Smorza solo i 200 Hz; - Smorza i 200 e i 20 Hz Plotare i risultati. Creare i filtri simmetrici e quelli asimmetrici. 65 di Fabio Bozzoli