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
Scarica

Filtraggio dei dati