Filtri per sistemi di acquisizione dati

Filtri per SAD
Alberto Vallan
Filtri per sistemi di
acquisizione dati
• Impiego di filtri nei SAD
• Cenni sui filtri analogici
– Caratteristiche
– Approssimazioni di filtri ideali
• Filtri numerici
– Implementazioni FIR/IIR
– Esempi e applicazioni
1
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
Quando impiegare i filtri nei sistemi di
acquisizione. Alcuni esempi.
• L’utilizzo di filtri nei sistemi di acquisizione dati è spesso motivato
dall’esigenza di incrementare il rapporto S/N dei segnali.
• Le componenti spettrali del segnale che non portano
informazione costituiscono il ‘rumore’ sovrapposto al segnale.
• Se le componenti di rumore sono spettralmente separate dal
segnale utile è possibile usare un filtro per migliorare il S/N
Esempio: Incremento del S/N
2
2
Ampiezza
0
-1
-2
10
10
10
10
10
200
400
600
800
0
-1
-2
1000
0
10
Spettro
-1
Ampiezza
1
Filtro
passa basso
10
-2
10
0
200
400
600
800
1000
1200
400
500
600
0
-1
Spettro
-2
Segnale di uscita
Segnale di ingresso
1
-3
10
-3
-4
0
100
200
300
400
500
10
600
-4
0
100
200
300
Esistono filtri per eliminare il rumore spettralmente non separato
2
Torino, 21/09/2004
Pag. -1
1
Filtri per SAD
Alberto Vallan
Altro impiego molto comune è quello dei filtri antialiasing che
“limitano” la banda del segnale alla frequenza di Nyquist
Esempio: Filtri antialiasing (1)
1
0.8
0.6
Il segnale di ingresso è
y(t)=sin (2πf0t)
con f0= 19 kHz
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0
0.5
1
1.5
2
x 10
-3
1
Se si osserva il segnale con un
oscilloscopio la cui frequenza di
campionamento è fS= 10 kHz appare una
sinusoide avente la stessa ampiezza del
segnale di ingresso ma con frequenza
1 kHz
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0
0.5
1
1.5
2
-3
x 10
3
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
Esempio: Filtro antialiasing (2)
Si vuole misurare l’ampiezza di un segnale sinusoidale
x1=sin(2πf1t) con f1 = 500 Hz
Al segnale di ingresso è sovrapposto un disturbo anch’esso
sinusoidale
x2=sin(2πf2t+pi) con f2 = 19500 Hz
Purtroppo non sapete che è presente un disturbo e impostate la
frequenza di campionamento del vostro sistema a 10 kHz.
2
1.5
1
1
0.5
0.5
0
0
-0.5
-0.5
-1
-1
-1.5
-2
0
Segnale acquisito
Segnale di ingresso
2
1.5
-1.5
0.002
0.004
0.006
0.008
0.01
-2
4
5
6
7
8
9
10
-3
x 10
•Il segnale acquisito ha una sola componente avente frequenza
500 Hz
•La frequenza del segnale misurato è 500 Hz ma l’ampiezza è il
doppio di quella della componente in ingresso a 500 Hz
4
Torino, 21/09/2004
Pag. -2
2
Filtri per SAD
Alberto Vallan
Filtri analogici
I filtri più comunemente impiegati nei SAD sono lineari, tempo
invarianti, dotati di un ingresso e un’uscita.
x(t)
y(t)
h(t)
•Se il segnale di ingresso x(t) è sinusoidale, anche l’uscita è
sinusoidale. Il legame tra le ampiezze e le fasi dei due segnali
dipende dalle caratteristiche del filtro.
•Il filtro è descritto univocamente dalla sua risposta all’impulso
h(t).
•La risposta y(t) ad uno stimolo qualunque può essere calcolata
con la riposta all’impulso
y(t)=x(t)*h(t)
dove l’operatore * indica l’integrale di convoluzione, cioè:
+∞
y(t) = ∫ x(t − )h( )d
τ
τ
τ
−∞
5
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
• Utilizzando le trasformate di Laplace è possibile descrivere il
filtro nel dominio della frequenza. La trasformata H(s) della
risposta all’impulso h(t) è detta funzione di trasferimento e il
legame tra le trasformate dei segnali di ingresso e uscita è:
Y(s)=X(s)H(s)
• La funzione H(s) è razionale e assume la forma
H(s) =
a0 + a1s + ... + an sn
b0 + b1s + ... + bm sm
• Le radici del numeratore sono dette zeri, mentre quelle del
denominatore sono dette poli.
• Le caratteristiche (risposta in frequenza, stabilità, etc) del filtro
dipendono dal numero e dalla posizione di poli e zeri nel piano
complesso.
• Nei filtri fisicamente realizzabili il grado del numeratore è
inferiore a quello del denominatore (ordine del filtro)
6
Torino, 21/09/2004
Pag. -3
3
Filtri per SAD
Alberto Vallan
La risposta in frequenza del filtro,ottenuta ponendo s=jω nella
funzione dintrasferimento, indica l’effetto (in modulo H(jω ) e
fase ∠H(jω ) ) che il filtro ha su segnali sinusoidali.
Nel caso di segnale sinusoidale
x(t)=A sin (ω0t+ϕ)
l’uscita sarà
y(t)=
H(jω 0 ) A sin (ω0t+ϕ+ ∠H(jω 0 ) )
H(jω)
A
FdT del filtro
Segnale in
ingresso
ω0
H(jω 0 ) A
ω
Segnale
filtrato
ω0
ω
7
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
Principali tipi di filtri
I filtri possono essere classificati sulla base della risposta in
frequenza:
H(f)
H(f)
Passa
alto
Passa
basso
f
f
fT
fT
H(f)
H(f)
Elimina
banda
Passa
banda
f
f
B
B
La frequenza di taglio e la banda di questi filtri sono generalmente
misurate al livello –3dB (corrispondente ad una riduzione del
modulo pari a 1 / 2 )
8
Torino, 21/09/2004
Pag. -4
4
Filtri per SAD
Alberto Vallan
I filtri passa banda ed elimina banda possono essere realizzati
con una combinazione di filtri passa alto e passa basso.
x(t)
y'(t)
f2
y(t)
f1
x(t)
f1
+
y(t)
f2
f0
0
-2
-3 dB
-4
|H(f)| (dB)
Per ottenere una banda
passante più stretta si
utilizzano altre tecniche (filtri
risonanti). In questi filtri la
banda è spesso riferita alla
frequenza di centro banda.
Si definisce il fattore di qualità
di un filtro come Q=f0/B
-6
-8
B
-10
-12
-14
-16
-18
-20
20
30
40
50
60
70
80
90
100
f (Hz)
9
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
Caratteristiche dei filtri
• La funzione di trasferimento di un filtro passa basso ideale ha il
modulo del costante all’interno della banda passante, nullo nella
banda d’arresto. Fase nulla in banda.
• Un filtro con queste caratteristiche non è fisicamente realizzabile
(non è causale) e quindi si utilizzano filtri reali che approssimano
quelli ideali.
Le approssimazioni più
utilizzate sono:
• Butterworth
• Chebyshev
• Ellittici
• Bessel (raramente in
forma numerica)
Questi filtri possono essere progettati come
passa basso, alto, banda ed elimina banda
10
Torino, 21/09/2004
Pag. -5
5
Filtri per SAD
Alberto Vallan
Filtri di Butterworth
• Presentano una risposta in frequenza massimamente piatta in
banda passante
• La risposta è monotona decrescente al crescere della
frequenza
1
0.9
Specifiche di progetto:
• ordine
• frequenza di taglio
• guadagno in banda
(spesso nei tool di
progetto è fissato di
default ad 1)
0.8
0.7
0.6
0.5
N=2
0.4
0.3
0.2
0.1
0
N=20
0
0.2
0.4
0.6
N=5
0.8
1
11
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
Filtri di Chebyshev
•Hanno una banda di transizione minore di quella dei filtri
Butterworth (a parità di ordine)
•La ridotta banda di transizione è ottenuta a spese della
monotonicità della risposta.
•I filtri di Tipo I presentano un ripple costante nella banda
passante; quelli di Tipo II hanno ripple nella banda attenuata.
Per entrambi i parametri di progetto sono: ordine, frequenza
di taglio e ripple
12
Torino, 21/09/2004
Pag. -6
6
Filtri per SAD
Alberto Vallan
TIPO I
1
0
0.9
0.8
-0.5
Modulo in dB
Modulo
0.7
-1
0.6
0.5
-1.5
N=2
0.4
Ripple = 1dB
-2
0.3
0.2
N=20
0.1
N=5
-2.5
-3
0
0
0.2
0.4
0.6
0.8
1
0
0.1
0.2
0.3
0.4
0.5
TIPO II
20
1.2
Modulo
-20
N=20
0.8
Modulo in dB
0
1
N=5
-40
-60
0.6
0.4
-80
N=2
-100
0.2
0
Ripple = 40 dB
-120
0
0.2
0.4
0.6
0.8
-140
1
0
0.2
0.4
0.6
0.8
1
13
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
Filtri di Ellittici (o di Cauer o equiripple)
equiripple)
• Caratteristica principale dei filtri ellittici è di avere la minima
banda di transizione, a parità di ordine.
• Il ripple nella risposta in frequenza è presente nelle due bande.
• I parametri di progetto sono: ordine, ripple in banda passante,
ripple in banda attenuata, frequenza di taglio.
0
1
-1
0.9
-3
0.8
-4
0.7
Modulo
Modulo in
banda
passante
(dB)
-2
Ripple = 1dB
-5
-6
0.6
-7
0.5
0
0.1
0.2
0.3
0.4
0.5
0.4
N=2
0.3
Ripple = 30dB
Modulo in
banda
attenuata
(dB)
-20
N=5
0.1
0
0
0
-10
0.2
-30
N=20
-40
-50
0.2
0.4
0.6
0.8
1
-60
-70
-80
0.5
0.6
0.7
0.8
0.9
1
14
Torino, 21/09/2004
Pag. -7
7
Filtri per SAD
Alberto Vallan
Confronto a parità di ordine e frequenza di taglio
Modulo
Fase*
Butterworth
4
Chebyshev I
3 II
Chebyshev
Ellittico 2
1.2
1
0.8
1
0.6
0
-1
0.4
-2
0.2
0
-3
0
0.2
0.4
0.6
0.8
1
-4
0
0.2
0.4
0.6
0.8
1
Osservare:
• frequenza di taglio (Chebyshev II...)
• banda di transizione
• ripple
• fase in banda
15
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
Progetto e realizzazione
E’ possibile reperire numerosi progetti di filtri analogici:
• nella bibliografia specializzata;
• nelle note applicative dei costruttori di amplificatori operazionali.
A titolo di esempio si riporta lo schema di un filtro Butterworth
del secondo ordine (Texas Instruments). Le formule di progetto
dei componenti consentono di scegliere la frequenza di taglio e il
tipo di approssimazione.
Modulo
Fase
16
Torino, 21/09/2004
Pag. -8
8
Filtri per SAD
Alberto Vallan
Uso di filtri numerici
• I filtri analogici sono utilizzati all’interno del blocco di
condizionamento dei segnali, prima della conversione A/D.
• In molti casi è possibile ottenere lo stesso effetto utilizzando filtri
numerici che operano sui campioni prodotti dal convertitore.
condizion.
analogico
segnali
condizion.
analogico
segnali
conversione
A/D
A/D
Memoria di
acquisizione
Pre
elaborazione
Mem
Elaborazione
Post elab
Talvolta i filtri numerici sono contenuti all’interno degli A/D o
della scheda di acquisizione
17
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
18
Torino, 21/09/2004
Pag. -9
9
Filtri per SAD
Alberto Vallan
Quali
Quali scegliere?
I filtri numerici presentano i seguenti vantaggi:
• Sono programmabili
• Non presentano derive
• Non richiedono componenti di precisione
• Non devono essere accordati
• Sono insensibili al rumore esterno
• Generalmente forniscono prestazioni superiori (a parità di “costo”)
Ove possibile è quindi preferibile usare filtri numerici.
I filtri analogici, in alcuni casi, rappresentano una scelta obbligata:
• filtri antialiasing
• filtri per disturbi transitori
• filtri per ridurre rumore e disturbi quando le loro ampiezze sono
paragonabili o superiori alle ampiezze dei segnali utili.
• filtri per segnali ad alta frequenza
• filtri passivi per grandi dinamiche
19
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
I filtri numerici
I filtri numerici sono sistemi che trasformano una sequenza
numerica d’ingresso x[k] in una sequenza d’uscita y[n].
x[n]
Filtro numerico
h[n], H(z)
y[n]
Il legame tra le due sequenze (nel caso di filtri lineari e tempo
invarianti) può essere espresso con un’equazione alle differenze
y[n] + a1y[n-1] +…+ aNy[n-N] = b0x[n] + b1x[n-1] +…+ bMx[n-M]
y[n]= -a1y[n-1] -…-aNy[n-N] + b0x[n] + b1x[n-1] +…+ bMx[n-M]
La relazione lega il generico campione y[n] all’istante n agli ingressi
e alle uscite precedenti e può essere utilizzata per calcolare l’uscita
del filtro per un ingresso x[n] se sono noti i coefficienti ai e bi.
Filtri in cui almeno un coefficiente ai è diverso da zero sono detti
ricorsivi.
In alcuni filtri la risposta dipende solo dagli ingressi e quindi i
coefficienti ai sono nulli. Questi filtri sono detti non ricorsivi.
20
Torino, 21/09/2004
Pag. -10
10
Filtri per SAD
Alberto Vallan
La funzione di trasferimento
La trasformata Z è lo strumento utilizzato per definire la funzione di
trasferimento dei filtri numerici in modo analogo a quanto fatto nel
dominio analogico con la trasformata di Laplace.
Ricordando che trasformata Z della sequenza ritardata di m
campioni x[n-k] è X(z)z-k , è possibile trasformare la relazione
precedente ottenendo così la funzione di trasferimento del filtro
numerico
H(z) =
Y(z) b 0 + b1z −1 + b 2 z −2 + ... + bMz −M
=
X(z) 1+ a1z −1 + a 2 z −2 + ... + aNz −N
Si può osservare che la funzione di trasferimento è costituita dal
rapporto di due polinomi nella variabile complessa z.
21
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
La risposta nel tempo del filtro per un generico ingresso x[n]
può essere calcolata come:
M
N
k =0
k =1
y[n] = ∑ bk x[n − k] −∑ ak y[n − k]
dove a1,..., aN e b0,...,bM sono i coefficienti della funzione di
trasferimento
22
Torino, 21/09/2004
Pag. -11
11
Filtri per SAD
Alberto Vallan
Descrizione nel dominio del tempo
La funzione di trasferimento H(z) può anche essere ottenuta
applicando la trasformata Z della risposta all’impulso h[n] del filtro.
Nel dominio del tempo la sequenza di uscita, come per i filtri
analogici, è legata da quella di ingresso da una relazione
(convoluzione) che coinvolge la risposta all’impulso
y[n] =
+∞
∑ x[k ]h[n − k ]
k = −∞
• Filtri con risposta all’impulso costituita da un numero finito di
termini non nulli sono detti FIR.
• Filtri con risposta all’impulso infinita sono detti IIR.
• La risposta all’impulso di un filtro non ricorsivo è una sequenza
finita. Questi filtri sono dunque di tipo FIR; la loro risposta
all’impulso coincide con i coefficienti del filtro.
• I filtri ricorsivi sono generalmente IIR.
23
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
Descrizione di filtri tramite diagrammi a blocchi
La descrizione coinvolge tre blocchi base:
• Il ritardatore unitario
• Il moltiplicatore
• Il sommatore
Il ritardatore unitario genera un’uscita identica all’ingresso ma
ritardata di un intervallo di campionamento
x[n]
y[n]=x[n-1]
z-1
In generale, un filtro IIR ha la seguente struttura:
24
Torino, 21/09/2004
Pag. -12
12
Filtri per SAD
Alberto Vallan
Esempio
Nel filtro a media mobile: l’uscita è calcolata come media di N
campioni precedenti
y[n] =
1
N
N −1
∑ x[n − k ]
k =0
Nel caso N=4 si ha
y[n]=0.25 x[n]+0.25 x[n-1]+0.25 x[n-2] +0.25 x[n-3]
E la risposta all’impulso è
h[0]=0.25; h[1]=0.25; h[2]=0.25; h[3]=0.25;
sinteticamente h[n]=[0.25, 0.25, 0.25, 0.25]
Questo filtro ha risposta finita ed è quindi di tipo FIR
La funzione di trasferimento ha gli stessi coefficienti della
risposta all’impulso
H(z)=0.25+0.25 z-1+0.25 z-2+0.25 z-3
25
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
26
Torino, 21/09/2004
Pag. -13
13
Filtri per SAD
Alberto Vallan
Calcoliamo la risposta al gradino unitario tramite la convoluzione
x[k]
x[k]
0
0
-3
h[3]
-2
h[2]
-1
0
1
2
3
-3
k
h[0-k]
h[0] 0.25
h[1]
1
n=1
1
n=0
-2
h[3]
-1
h[2]
0
h[1]
1
2
h[1-k]
h[0] 0.25
3
k
k
x[k]
x[k]
1
n=2
1
n=3
0
0
-3
-2
-1
0
1
h[2-k]
h[2]
h[1]
h[3]
k
2
h[0]
3
-3
k
h[3]
0.25
-2
h[2]
-1
h[1]
0
h[0]
1
2
3
k
h[0-k]
0.25
k
k
La risposta y[n] è
y[n]
1
-2
-1
0
1
2
3
n
4
27
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
Per prevedere il comportamento del filtro con altri segnali di
stimolo bisogna calcolarne la risposta in frequenza.
Si può procedere analiticamente (sostituendo a z=ejωt) oppure
utilizzare uno specifico programma (Matlab, Octave, SciLab, ..)
1
0.9
Le funzioni ML sono:
b=[1 1 1 1]/4;
[H w]=freqz(b,1,1000);
plot(w,abs(H))
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0
0.5
1
1.5
2
2.5
3
3.5
freqz() restituisce 1000 punti della risposta in frequenza H
equispaziati tra 0 e π (π corrisponde alla frequenza di Nyquist)
Il filtro si comporta come un passa basso.
28
Torino, 21/09/2004
Pag. -14
14
Filtri per SAD
Alberto Vallan
La risposta del filtro ad un certo ingresso può essere calcolata
• utilizzando i coefficienti della funzione di trasferimento
• utilizzando la sua risposta all’impulso
b=[1 1 1 1]/4; a=1
• xf=filter(b,a,x);
• xf=conv(x,b);
1.5
Esempio: risposta di un filtro a
media mobile ad un segnale
sinusoidale corrotto da rumore
Il risultato è simile a quello che
si otterrebbe con un filtro
analogico del primo ordine
avente banda pari a circa un
decimo della frequenza di
campionamento
1
0.5
0
-0.5
-1
-1.5
0
1
2
3
4
5
-3
x 10
29
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
Risposta all’onda quadra corrotta da rumore
fS=10 kHz; f0= 100 Hz
Implementazione in
Segnale di ingresso
2.5
MS-VB:
2
for i=1 to Ns-N
for j=1 to N
y(i)=x(i)*h(j)
next
next
1.5
1
0.5
0
-0.5
-1
-1.5
-2
-2.5
0
0.002
0.004
0.006
0.008
0.01
1.5
1.5
0
-0.5
-1
-1.5
-2
0
0.002
0.004
0.006
0.008
0.01
1
N=4
Segnale di uscita
Segnale di uscita
1
0.5
0.5
0
-0.5
-1
-1.5
0
0.002
0.004
0.006
0.008
N=20
0.01
All’aumentare dell’ordine
• si riduce il rumore all’uscita
• aumenta il tempo di risposta
• aumenta il tempo impiegato per ‘caricare’ il filtro
30
Torino, 21/09/2004
Pag. -15
15
Filtri per SAD
Alberto Vallan
• Aumentando l’ordine del filtro si riduce la banda passante.
• L’attenuazione in banda d’arresto è comunque modesta.
• Non è quindi adatto per applicazioni ove è richiesta una
grande attenuazione (filtri antialiasing, anche se in realtà
bisognerebbe considerare lo spettro del segnale d’ingresso)
0
-5
N=4
N=8
-10
N=16
-15
-20
-25
-30
-35
-40
0
0.5
1
1.5
2
2.5
3
31
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
Quando è importante avere un filtro a fase lineare
La linearità della fase è importante quando il filtro deve preservare
la forma d’onda del segnale (ECG).
La condizione di non distorsione dei segnali richiede che, in
banda, il modulo della funzione di trasferimento sia costante e la
fase lineare
Se la fase è una funzione lineare della frequenza allora le
componenti armoniche del segnale subiscono lo stesso ritardo
temporale
∆t =
∠H (ω )
ω
=
a ⋅ω
ω
=a
∀ω
Esempio
angle(H(ω))= a·ω, con a=1/1000
calcoliamo il ritardo introdotto dal filtro per
• f1 = 100 Hz, la fase vale 0.2π e il ritardo vale 1 ms
• f2 = 200 Hz la fase vale 0.4π e il ritardo vale 1 ms (ritardo
costante pari ad a)
32
Torino, 21/09/2004
Pag. -16
16
Filtri per SAD
Alberto Vallan
Filtri FIR a fase lineare
I filtri FIR possono essere progettati per avere fase esattamente
lineare.
Esistono 4 tipi di filtri FIR a fase lineare
Le funzioni di progetto di ML forniscono sempre filtri a fase
lineare (fa eccezione la funzione cremez)
33
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
Progetto di filtri FIR
I coefficienti della risposta all’impulso di un filtri FIR possono
essere ricavati dalla risposta in frequenza voluta utilizzando
l’antitrasformata di Fourier
h[n] =
1
2π
π
∫ π H (ω )e
−
jωn
dω
Con questa relazione si ottengono i campioni della risposta
all’impulso che coincidono con i coefficienti del filtro.
Purtroppo i filtri a banda limitata, come il passa basso ideale,
hanno un infiniti coefficienti non nulli e quindi non sono
fisicamente realizzabili.
La soluzione più semplice è quella di troncarne la risposta
all’impulso; la risposta in frequenza del filtro risulta però corrotta
da sovraelongazioni (fenomeno di Gibbs).
34
Torino, 21/09/2004
Pag. -17
17
Filtri per SAD
Alberto Vallan
Esempio
Progettare un filtro FIR filtro passa basso avente frequenza di
taglio ω0 e riposta unitaria in banda con fase nulla.
La funzione di trasferimento è dunque:
1 per ω < ω 0
H (ω ) = 
0 altrove
Con l’equazione precedente è possibile calcolare
analiticamente l’espressione della risposta all’impulso,
ottenendo
h[n] =
1
2π
π
∫ π H (ω )e
j ωn
−
dω =
ω0
ω
sin c 0
π
π

n

con ω compreso tra -π e π
35
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
Calcoliamo i primi 21 coefficienti del filtro (con ML) che
lavorerà con segnali campionati alla frequenza di 10 kHz.
Fissiamo la frequenza di taglio a f0=2 kHz
0.4
0.35
b=f0/fny*sinc(f0/fny*[-10:10]);
0.3
0.25
0.2
0.15
0.1
0.05
0
-0.05
-0.1
1.4
0
5
10
15
20
25
La risposta in frequenza risulta
1.2
1
[H w]=freqz(b,1,1000);
N=101
N=21
0.8
L’ampiezza delle
sovraelongazioni non può
essere ridotta nemmeno
incrementando l’ordine del filtro
0.6
0.4
0.2
0
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
36
Torino, 21/09/2004
Pag. -18
18
Filtri per SAD
Alberto Vallan
Uso di finestre di pesatura
Il fenomeno di Gibbs nasce dal brusco troncamento dei
coefficienti del filtro.
L’utilizzo di finestre (funzioni) di pesatura dei coefficienti del filtro
consente di ottenere code della risposta all’impulso più “morbide”
hw[n]=h[n]·w[n]
Esempio
Una finestra molto usata è quella di Hanning, così definita:
w[n] = 0.5 − 0.5 ⋅ cos
1.2
1.4
1
1.2
Finestra di Hann
0.8
Risposta in frequenza
• coefficienti pesati
• non pesati
1
0.6
0.8
0.4
0.6
0.2
0.4
0
0.2
-0.2
2πn
N
0
0
5
10
15
20
25
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
Coefficienti non pesati/ pesati
37
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
Fonte: Analog Devices
38
Torino, 21/09/2004
Pag. -19
19
Filtri per SAD
Alberto Vallan
Scelta della finestra
Le caratteristiche della finestra usata determinano le
caratteristiche della funzione di trasferimento del filtro
hw[n]=h[n]·w[n]
⇓
Hw(ω)=H(ω)*W(ω)
la funzione di trasferimento del filtro con coefficienti pesati è la
convoluzione della funzione di trasferimento H(ω) ottenuta senza
finestra e la trasformata della finestra W(ω)
Non applicare alcuna finestra significa, in realtà, applicare una
finestra rettangolare la cui trasformata è
8
7
sin(ωN / 2) − jω ((N−1) / 2)
W (ω ) =
e
sin(ω / 2)
Nucleo di
Dirichlet
6
5
4
3
2
1
0
0
1
0
2
3
4
5
6
2π
7
39
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
Principali finestre
2 n
N
π
Hamming
w[n] = 0.54 − 0.46 cos
Blackman
w[n] = 0.42 − 0.5 cos
Hanning
w[n ] = 0.5 − 0.5 cos
2 n
2 n
+ 0.08cos
N
N
π
π
2 n
N
π
2 n
N
4 n
+ 0.14128 cos
N
6 n
− 0.01168 cos
N
π
BH 4 - terms w[n] = 0.35875 − 0.48829 cos
π
π
40
Torino, 21/09/2004
Pag. -20
20
Filtri per SAD
Alberto Vallan
41
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
Finestra
Rettangolare
Hanning
Hanmming
Blackman
BH
Larghezza di banda a Ampiezza lobo
-3 dB (campioni)
laterale (dB)
0.89
1.44
1.3
1.68
1.9
Pendenza lobi
laterali (dB/ottava)
-12
-32
-42
-58
-92
6
18
6
18
6
Esempio: Passa basso, B=1 kHz, fs=10 kHz
b=FIR1(N,B/fs*2,hann(N+1));
20
20
0
0
-20
-20
-40
-60
-40
-80
-60
-100
Rettangolare
Hanning
Hamming
-80
-100
-120
-140
-160
-180
0
500
1000
1500
2000
Rettangolare
Hanning
Hamming
-120
2500
3000
3500
4000
4500
5000
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
N=101
N=21
42
Torino, 21/09/2004
Pag. -21
21
Filtri per SAD
Alberto Vallan
La funzione FIR1 di ML consente di progettare filtri
• passa basso
• passa alto
• passa banda
• elimina banda
Esempio
Filtro passa banda FIR, banda passante da f1=1000 Hz a f2=10
kHz, frequenza di campionamento fS=48 kHz
b=FIR1(N,[f1/fny f2/fny],rectwin(N+1));
0
-10
-20
N=21
-30
N=101
-40
N=41
-50
-60
-70
-80
0
0.5
1
1.5
2
x 10
4
43
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
Progetto di filtri FIR con risposta arbitraria
Filtri FIR con risposta arbitraria possono essere progettati con il
metodo del campionamento in frequenza.
La funzione FIR2 di ML impiega questa tecnica e consente di
ottenere i coefficienti del filtro a partire da un insieme di punti
della funzione di trasferimento voluta.
Può essere usata per progettare filtri multibanda.
Esempio
Realizzare un filtro avente la
seguente risposta in frequenza
1.2
1
1
N=401
0.9
0.8
0.8
N=101
0.7
0.6
0.6
0.5
0.4
0.4
0.3
0.2
0.2
N=21
0.1
0
0
0
0.5
1
1.5
2
2.5
x 10
0
0.5
1
1.5
2
2.5
4
4
x 10
44
Torino, 21/09/2004
Pag. -22
22
Filtri per SAD
Alberto Vallan
Impiego di filtri numerici come filtri antialiasing
• I filtri antialiasing sono filtri passa basso usati per limitare la
banda del segnale alla frequenza di Nyquist del sistema di
acquisizione
• Tutta l’informazione contenuta nel segnale fino alla frequenza di
Nyquist è teoricamente disponibile dopo l’acquisizione, purché
non sia stata eliminata dal filtro.
• Se il segnale utile ha banda B, e la frequenza di transizione del
filtro è fT, la frequenza di campionamento dovrà essere almeno
fS=2(B+fT)
• In generale si cerca di utilizzare la più piccola frequenza di
campionamento possibile così da poter utilizzare AD più lenti (più
economici o più accurati) e da ridurre il numero di campioni
acquisiti.
45
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
• L’utilizzo di filtri aventi una ridotta banda di transizione
consente di ridurre la frequenza di campionamento, ma ciò
richiede di utilizzare filtri analogici di ordine elevato.
• La tecnica del sovracampionamento, basata sull’impiego di
frequenze di campionamento superiori al minimo richiesto,
consente di utilizzare filtri analogici più semplici.
Il processo di
decimazione può
generare aliasing e
quindi i segnali
devono essere
preventivamente
filtrati con filtri
numerici.
46
Torino, 21/09/2004
Pag. -23
23
Filtri per SAD
Alberto Vallan
Come si procede:
Risposta del f iltro analogico
Spettro del segnale da acquisre
Bu
f OS/2
f
Risposta del filtro numerico
Spettro del segnale acquisto
Bu
f S/2
f OS/2
f
Si filtra il segnale (a larga
banda) con un filtro passa
basso analogico e si
‘sovracampiona’ alla
frequenza fOS
Si applica un filtro numerico
avente banda passante poco
superiore alla banda utile Bu
e ridotta banda di transizione
Infine si decimano i campioni
acquisiti.
• Le specifiche del filtro analogico sono meno stringenti sia in
banda passante sia in banda attenuata (aliasing oltre fOS-Bu)
• Aumenta il tempo di elaborazione e l’utilizzo della memoria
47
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
I filtri FIR consentono di ridurre i tempi di calcolo in caso di
decimazione
La funzione decimate(x,R) di ML esegue filtraggio e decimazione.
48
Torino, 21/09/2004
Pag. -24
24
Filtri per SAD
Alberto Vallan
Filtri IIR
La struttura di filtri IIR è simile a quella dei FIR, ma l’uscita
dipende anche dalle uscite precedenti
Le funzioni viste precedentemente si utilizzano anche per questi filtri
• [H w]=freqz(b,a,N);
• xf=filter(b,a,x);
49
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
Caratteristiche dei filtri IIR
50
Torino, 21/09/2004
Pag. -25
25
Filtri per SAD
Alberto Vallan
FIR vs IIR
51
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
Progetto di filtri IIR
Esistono numerosi metodi di progetto di filtri numerici. I
principali riguardano:
• la conversione della risposta in frequenza di filtri analogici
nella risposta dell’equivalente numerico (trasformazione
biblineare+prewarping)
• l’approssimazioni di una risposta in frequenza arbitraria
(equazioni di Yule-Walker)
52
Torino, 21/09/2004
Pag. -26
26
Filtri per SAD
Alberto Vallan
Progetto di IIR da filtri analogici:
la trasformazione bilineare
Si converte la funzione di trasferimento di un filtro analogico in
quella di un filtro numerico operando la sostituzione:
s→
2 1 − z −1
T 1 + z −1
Se il filtro analogico è stabile lo sarà anche quello numerico
(salvo problemi dovuti all’arrotondamento numerico)
53
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
Utilizzando la trasformazione bilineare si ottiene una relazione
non lineare tra le frequenze del dominio analogico e le
frequenze di quello numerico.
Tale relazione deve essere usata per corregge la risposta in
frequenza del filtro analogico prima dell’impiego della
trasformazione bilineare (frequency prewarping)
2
1.8
fs
1.6
1.4
1.2
fd/fny
π
tan
πf d
fa/fny
fa =
fs
1
0.8
0.6
0.4
0.2
0
0
0.1
0.2
0.3
0.4
fa/fny
0.5
0.6
0.7
0.8
fd/fny
54
Torino, 21/09/2004
Pag. -27
27
Filtri per SAD
Alberto Vallan
Esempio: filtro passa banda del secondo ordine
Si vuole realizzare un filtro numerico in grado di isolare la
componente fondamentale del segnale acquisito dalla rete di
distribuzione dell’energia elettrica. Si vuole quindi utilizzare un
filtro passa banda del secondo ordine centrato alla frequenza di
50 Hz
ω0
H ( s) =
Q
s2 +
ω0
Q
s
s + ω 02
Dove ω0=2πf0 con f0=50 Hz e Q, fattore di qualità del filtro Q=5
55
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
Si applica la relazione di prewarp alla frequenza di centro banda
del filtro (è la frequenza che dovrà avere il filtro numerico) e si
ottiene la frequenza che si dovrà usare nella descrizione del filtro
analogico. Supponendo che la frequenza di campionamento sia
fS= 500 Hz
f 0a =
fs
π
tan
πf 0 d
fs
=
500
π
tan
π 50
500
≈ 51.7 Hz
Applichiamo la trasformazione bilineare
H ( z) =
b0 = 2
ω 0d
Qf S
b1 = 0 ;
;
ω 0d
ω
a0 = 4 + 2
+  0 d
Qf S  f S
b0 + b1 z −1 + b2 z −2
a0 + a1 z −1 + a2 z − 2
2

ω
 ; a1 = −8 + 2 0 d

 fS
dove
b2 = −b0
2

ω
ω
 ; a2 = 4 − 2 0 d +  0 d
Qf S  f S




2
56
Torino, 21/09/2004
Pag. -28
28
Filtri per SAD
Alberto Vallan
Si ottiene
a=[4.6822
-7.1554
4.1624]
b=[0.2599
0
-0.2599]
Il modulo della funzione di trasferimento risulta (con ML)
[H w]=freqz(b,a,1000)
0
Verificare la
frequenza di centro
banda ed il fattore
di qualità
-5
Modulo in dB
-10
-15
-20
-25
-30
-35
-40
0
50
100
150
200
250
f(Hz)
57
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
Filtriamo un segnale sinusoidale (Vp=1) corrotto da rumore
gaussiano bianco (std=0.4)
Q=5
Q=20
a=[4.6822 -7.1554 4.1624]
b=[0.2599
0 -0.2599]
a=[4.4873 -7.1554 4.3573]
b=[0.0650
0 -0.0650]
Unfiltered
Unfiltered
2
1
0
-1
-2
0
0.05
0.1
0.15
0. 2
0.25
0.3
0.35
0.4
Non filtrato
Non filtrato
3
2
1
0
-1
-2
0
0.05
0.1
0.15
Filtered
Filtrato
Filtrato
0.25
0.3
0.35
0.4
0.25
0.3
0.35
0.4
1
1
0
-1
-2
0.2
Filtered
2
0.5
0
-0.5
-1
0
0.05
0.1
0.15
0. 2
0.25
0.3
0.35
0.4
0
0.05
0.1
0.15
0.2
• All’aumentare del fattore di qualità migliora la selettività del
filtro, ma aumenta il tempo di risposta.
• Gli effetti dell’arrotondamento possono rende il filtro instabile.
• I filtri dl secondo ordine sono i meno sensibili agli effetti di
quantizzazione. Filtri IIR di ordine superiore sono spesso
realizzati come cascata di filtri del secondo ordine.
58
Torino, 21/09/2004
Pag. -29
29
Filtri per SAD
Alberto Vallan
Utilizzo delle funzioni Matlab per il progetto di
filtri IIR basati su prototipi analogici
[b,
[b,
[b,
[b,
a]
a]
a]
a]
=
=
=
=
}
BUTTER(N,Wn);
CHEBY1(N,R,Wn);
CHEBY2(N,R,Wn);
ELLIP(N,Rp,Rs,Wn);
per il progetto di filtri
passa basso
[B,A] = ELLIP(N,Rp,Rs,Wn,'high')
per il progetto di filtri passa alto
59
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
Esempio
Si vuole progettare un filtro passa banda del secondo ordine con
f0= 50 Hz, Q=5
Si calcolano le frequenze minima e massima della banda a -3 dB
fmin=f0-f0/Q
fmax=f0+f0/Q
I coefficienti del filtro si calcolano con la funzione
[b a]=butter(1,[fmin/fny fmax/fny]);
0
La funzione di trasferimento
è molto simile a quella
ottenuta con la
trasformazione bilineare
-5
-10
-15
-20
-25
-30
-35
-40
0
50
100
150
200
250
60
Torino, 21/09/2004
Pag. -30
30
Filtri per SAD
Alberto Vallan
Progetto di filtri IIR con il metodo di YuleYule-Walker
Permette di ottenere i coefficienti di un filtro IIR che approssima
una risposta in frequenza arbitraria. Il metodo è basato su una
tecnica di fitting.
Si descrive, per punti, il modulo della riposta voluta
I coefficienti del filtro IIR si ottengono con la funzione
[b a]=yulewalk(N,f,m);
Nota: la fase non è specificata ed è quindi un parametro non
controllato
61
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
Progettando con il metodo di Y-W un filtro che ha le stesse
caratteristiche degli esempi precedenti si osserva che per
ottenere una “buona” risposta utilizzare almeno un filtro del 20°
ordine
0
-5
-10
-15
-20
-25
-30
-35
-40
0
50
100
150
200
250
L’impiego del metodo di Y-W non presenta particolari difficoltà,
ma deve essere utilizzato quando si vogliono realizzare filtri con
risposte difficili da ottenere con gli altri metodi
62
Torino, 21/09/2004
Pag. -31
31
Filtri per SAD
Alberto Vallan
Correzione della risposta in frequenza
• I filtri ideali a banda piatta non possono essere fisicamente
realizzati, ma possono essere approssimati utilizzando filtri di
ordine sufficientemente elevato.
• Filtri di ordine elevato richiedono elevati tempi di calcolo.
• Non sempre però è necessario avere una risposta piatta. In
alcuni casi l’effetto del filtro sui segnali in banda può essere
corretto a posteriori, ad esempio quando l’informazione cercata
è contenuta in una piccola porzione della banda del segnale
(FFT).
• In questo caso è possibile utilizzare filtri di ordine inferiore,
anche con elevato ripple in banda, ma comunque in grado di
garantire sufficiente attenuazione in banda d’arresto.
(Chebyshev).
• Se l’informazione è contenuta su una banda larga (RMS) la
correzione può essere apportata dopo aver trasformato il
segnale nel dominio della frequenza (può essere
eccessivamente dispendioso)
63
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
Vantaggi derivanti da una risposta con fase lineare
Si vuole realizzare un filtro passa basso, ellittico, dell’ottavo ordine
avente frequenza di taglio pari ad 1/10 della frequenza di
campionamento, ripple in banda 0.5 dB e in banda attenuata 40 dB.
[b a]=ellipt(8,0.5,40,0.2);
1
0.8
La risposta in modulo e
fase risulta:
0.6
0.4
0.2
0
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
4
2
0
-2
-4
64
Torino, 21/09/2004
Pag. -32
32
Filtri per SAD
Alberto Vallan
Osserviano il segnale all’uscita del filtro quando in ingresso sono
presenti due sinusoidi di frequenza f0=253 Hz e 3f0.
L’attenuazione del filtro alle due frequenze vale 0.988
1
0.99
0.98
0.97
0.96
0.95
0.94
0
100
200
300
400
500
600
700
800
900
1000
65
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
2
1
Segnale di ingresso
0
-1
-2
0
0.001
0.002
0.003 0.004
0.005 0.006
0.007
0.008
0.009
0.01
2
∆VP
1
Segnale d’uscita
0
-1
-2
0
0.001
0.002
0.003 0.004
0.005 0.006
0.007
0.008
0.009
0.01
La fase alla frequenza f0 vale -0.8 rad
La fase alla frequenza 3f0 vale -3.13 rad (per avere fase lineare
deve essere -2.4 rad).
Nota: Per non avere distorsioni è possibile usare filtri IIR
• rendendo la fase circa nulla (bisogna aumentare l’ordine)
• usando un filtro anticausale (se il fitraggio può avvenire
dopo l’acquisizione)
66
Torino, 21/09/2004
Pag. -33
33
Filtri per SAD
Alberto Vallan
Filtri IIR anticausali a fase nulla
Questa tecnica si può applicare solo se tutti i dati da filtrare
disponibili:
• si filtra la sequenza
• si inverte l’ordine della sequenza filtrata
• si filtra nuovamente
Filtrare una sequenza invertita è equivalente a filtrare la sequenza
diretta con un filtro avente lo stesso modulo della funzione di
trasferimento ma fase opposta.
Le due operazioni di filtraggio portano ad una compensazione
della fase. E’ come filtrare con un filtro a fase nulla e modulo pari
al modulo del filtro applicato al quadrato.
Attenzione alla presenza di fenomeni transitori all’inizio e alla fine
dei dati.
67
Torino, 21/09/2004
Filtri per SAD
Alberto Vallan
In ML la funzione per filtraggio anticausale è
y_nc=filtfilt(b,a,x);
2
1.5
1
0.5
0
-0.5
-1
-1.5
-2
0
0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009
0.01
I segnali appaiono in fase, senza distorsioni. E’ presente una
piccola differenza nelle ampiezze (0.9882).
68
Torino, 21/09/2004
Pag. -34
34