Capitolo 4 parte I

Transcript

Capitolo 4 parte I
Appunti di
Elaborazione numerica dei segnali
Capitolo 4 - Progetto di filtri FIR (I)
Introduzione ............................................................................................... 1
Caratteristiche dei filtri selettivi reali ......................................................... 3
Metodo delle finestre.................................................................................. 4
Dettagli analitici................................................................................. 10
Uso di particolari finestre................................................................... 12
Conclusioni sul metodo delle finestre.................................................. 22
Esempio concreto................................................................................ 22
INTRODUZIONE
Il primo aspetto di cui ci occupiamo, per quanto riguarda la progettazione di filtri numerici, è
il modo con cui vanno specificate le caratteristiche del filtro da implementare.
In primo luogo, dato che stiamo considerando filtri numerici, dobbiamo tener presente 2
caratteristiche fondamentali:
• la funzione di risposta all’impulso, che caratterizza il filtro nel dominio del tempo, è una
sequenza (finita o infinita) di campioni: la indichiamo, come al solito, con h(n), sottintendendo
che il periodo di campionamento, cioè la distanza tra un campione ed il successivo, è T=1/fC
(fC è la frequenza di campionamento);
• la funzione di trasferimento, che caratterizza il filtro nel dominio della frequenza e che
indichiamo con H(f), è la trasformata di Fourier di h(n): essendo quest’ultima una sequenza di
campioni, H(f) sarà una funzione periodica, con periodo fC; questo significa che essa si ripete
identicamente ogni intervallo di ampiezza fC, per cui è sufficiente conoscere il suo andamento
(in termini di modulo e fase), solo all’interno di un periodo; il periodo che si sceglie è il
cosiddetto periodo fondamentale (o periodo non ambiguo), che va da -fC/2 a +fC/2.
Premesso questo, supponiamo di avere un segnale x(n) campionato a frequenza fC, il cui spettro,
quindi, ancora una volta, è periodico di periodo fC:
X(f)
-2fC
-fC
-B
B
fC
2fC
f (Hz)
Appunti di “Elaborazione numerica dei segnali” - Capitolo 4
Supponiamo di aver rispettato il teorema del campionamento, per cui non abbiamo problemi di
aliasing. Supponiamo che lo spettro X(f) sia inoltre una funzione pari (come in figura), per cui ci
basta far riferimento solo alle frequenze positive1.
Supponiamo allora di voler isolare, con riferimento al periodo fondamentale ed estendendo poi il
discorso a ciascun periodo, tutte e sole le componenti del segnale fino alla frequenza fC/8, ad
esempio perché prevediamo di effettuare un sottocampionamento del segnale di un fattore 4.
Dobbiamo usare un filtro numerico, il quale dovrebbe idealmente lasciar passare immutate le
componenti spettrali fino ad fC/8 ed azzerare tutte le altre2. Questo filtro esiste solo a livello teorico:
si tratterebbe del filtro passa-basso ideale, con funzione di trasferimento rettangolare e
corrispondente funzione di risposta all’impulso del tipo sin(t)/t, di durata infinita:
-fC/8
fC/8
f (Hz)
Funzione di trasferimento del filtro di ricostruzione ideale, con frequenza di taglio fC/8, la cui
corrispondente funzione di risposta all’impulso è nella classica forma sin(t)/t, con gli zeri in 4/fC e
multipli
Nella realtà, ci accontentiamo di attenuare i termini spettrali oltre fC/8 al di sotto di una soglia
minima, oltre la quale il segnale sostanzialmente si confonde col rumore (sempre presente).
Queste considerazioni suggeriscono quindi di definire le caratteristiche di un filtro mediante una
cosiddetta maschera, del tipo illustrato nella prossima figura, nella quale vengono evidenziate le
zone proibite per la funzione di trasferimento H(f) che si vuole ottenere:
banda
passante
banda di
transizione
banda
arrestata
f (Hz)
Classica maschera per un filtro passa-basso.
1
Ricordiamo due note proprietà della trasformata di Fourier: se il segnale x(n) è reale, la sua trasformata X(f) gode della proprietà
di simmetria hilbertiana, il che significa che la parte reale di X(f) è una funzione pari, mentre la parte immaginaria è una
funzione dispari; se il segnale x(n), oltre ad essere reale, è anche pari, allora la parte immaginaria di X(f) è nulla, il che significa
che X(f) è una funzione reale e pari.
2
Ribadiamo che in questo e nei prossimi discorsi si fa sempre riferimento a quello che si intende fare nel periodo fondamentale,
perché poi le stesse procedure si applicano identicamente agli altri periodi.
Autore: Sandro Petrizzelli
2
Progetto di filtri FIR (parte I)
Le zone più scure sono quelle “proibite”, nelle quali non deve essere presente la funzione di
trasferimento del filtro desiderato. L’intervallo di frequenza che corrisponde alla banda di
transizione consente un raccordo (che non potrà mai essere brusco, ma solo graduale) tra la banda
passante e la banda arrestata.
E’ chiaro che la banda di transizione deve essere posta a cavallo della
frequenza di taglio desiderata, che nel caso considerato prima era fC/8.
Una volta fissata la maschera da rispettare, è accettabile qualsiasi procedura che consenta il
progetto di un filtro soddisfacente i requisiti imposti. I metodi di cui si occuperemo noi sono due e
precisamente il metodo delle finestre ed il metodo del campionamento in frequenza.
CARATTERISTICHE DEI FILTRI SELETTIVI REALI
Come ben sappiamo, i filtri ideali sono filtri non causali e quindi,
come tali, sono fisicamente irrealizzabili per applicazioni di
elaborazione in tempo reale. Si può viceversa verificare che i filtri causali, la cui
risposta all’impulso h(n) sia rigorosamente nulla prima dell’istante n=0, hanno una funzione di
trasferimento H(ω) che non può valere zero tranne che in un insieme finito di frequenze nella banda
di interesse. In aggiunta a questo, la funzione di trasferimento H(ω) di un filtro reale non può avere
una transizione netta da un valore non nullo (ad esempio unitario) al valore nullo, ossia una
transizione perfettamente verticale dalla banda passante alla banda arrestata.
D’altra parte, nonostante le caratteristiche della H(ω) di un filtro ideale siano comunque
desiderabili, in realtà esse non sono assolutamente necessarie nella maggior parte delle applicazioni.
Di conseguenza, se “alleggeriamo” queste condizioni, possiamo realizzare filtri causali che
approssimano i filtri ideali quanto più ci fa comodo.
In particolare, non è necessario insistere sul fatto che il modulo di H(ω) sia costante nell’intera
banda passante del filtro; al contrario, un minimo ripple in banda passante, come illustrato nella
prossima figura, è generalmente tollerabile:
Caratteristiche del modulo della funzione di trasferimento H(ω) di un filtro fisicamente realizzabile. Si
notano immediatamente le oscillazioni in banda passante, dove la funzione varia (quasi sinusoidalmente)
in un intervallo di ampiezza 2δ1, e le oscillazioni in banda arrestata, dove la funzione varia (quasi come il
modulo di un Seno) in un intervallo di ampiezza δ2>δ1
3
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 4
Così come è tollerabile un ripple in banda passante, è anche tollerabile un ripple in banda
arrestata, nella quale perciò si può generalmente rinunciare ad avere un modulo di H(ω)
identicamente nullo o comunque costante e molto piccolo.
La banda di transizione è quell’intervallo di frequenza, compreso tra le pulsazioni ωP ed ωS (dette
band-edge frequency, cioè frequenze delimitatrici di banda), in cui avviene appunto la transizione
dalla banda passante a quella arrestata.
Se c’è un ripple in banda passante, il suo valore è generalmente indicato con δ1 e il modulo di
H(ω) varia tra i due limiti 1±δ1. Analogamente, il ripple in banda arrestata è indicato usualmente con
δ2 .
In ogni problema di progettazione di un filtro, dobbiamo specificare le seguenti caratteristiche del
filtro stesso, che definiscono la cosiddetta maschera:
• il massimo ripple tollerabile in banda passante;
• il massimo ripple tollerabile in banda arrestata;
• le frequenze delimitatrici ωP ed ωS della banda di transizione.
Sulla base di queste specifiche, dobbiamo determinare i parametri del filtro che meglio
approssimano le caratteristiche richieste.
Il grado con cui H(ω) approssima le caratteristiche richieste
dipende
sia
dal
criterio
usato
per
la
determinazione
dei
coefficienti del filtro sia dal numero di coefficienti.
METODO DELLE FINESTRE
Il metodo delle finestre ha come punto di partenza quello di scegliere una funzione prototipo
come funzione di trasferimento del filtro. Possiamo allora scegliere, come funzione prototipo, quella
del filtro passa-basso ideale, vale a dire un rettangolo:
f (Hz)
Funzione di trasferimento del filtro passa-basso ideale, la cui corrispondente funzione di risposta
all’impulso è nella classica forma sin(t)/t.
Sappiamo che la corrispondente funzione di risposta all’impulso è un sin(t)/t, ovviamente
campionato a passo T=1/fC:
Autore: Sandro Petrizzelli
4
Progetto di filtri FIR (parte I)
t
Funzione di risposta all’impulso del filtro passa-basso ideale: è un sin(t)/t, campionato, di durata
infinita
Il nostro problema è che non possiamo considerare infiniti campioni (filtro IIR), ma dobbiamo
necessariamente troncare (per ottenere un filtro FIR), ossia troncare il sin(t)/t. Questo troncamento
corrisponde semplicemente a moltiplicare il sin(t)/t con una finestra rettangolare di durata
preassegnata: se vogliamo N campioni, dovremo considerare una finestra di durata NT:
t
Finestratura (nel tempo) di un segnale del tipo sin(t)/t tramite un rettangolo di durata NT: dato che i
campioni del sin(t)/t sono a distanza T, la finestratura produce solo N campioni della risposta all’impulso
L’operazione di finestratura nel tempo della risposta all’impulso corrisponde notoriamente alla
convoluzione, in frequenza, tra il rettangolo passa-basso ideale e la trasformata del rettangolo di
finestratura, che è a sua volta un sin(f)/f. Come è noto, questa convoluzione produce uno spettro che
corrisponde al rettangolo ideale di partenza, cui si aggiungono però delle oscillazioni sia in banda
passante, sia in banda di transizione sia in banda arrestata:
Funzione di trasferimento (con riferimento solo al periodo non ambiguo) del filtro ottenuto finestrando
la risposta all’impulso del filtro passa-basso ideale tramite una finestra rettangolare
5
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 4
E’ ovvio che il risultato della convoluzione è simmetrico rispetto all’origine delle frequenze.
Il campionamento produce la nota periodicizzazione di quello spettro, per cui la funzione di
trasferimento che di fatto stiamo implementando ha la seguente struttura:
Le oscillazioni che si producono a seguito del troncamento prendono il nome di oscillazioni di
Gibbs.
Facciamo un po' di conti per inquadrare la situazione a livello analitico.
L’operazione di considerare solo un numero finito di campioni di h(n) può essere interpretata in due
modi, perfettamente equivalenti:
• data h(t), la finestriamo, cioè ne consideriamo l’andamento entro un dato intervallo di tempo di durata
finita, e poi la campioniamo;
• il secondo modo è invece quello di campionare prima h(t) e poi di selezionare un numero finito di
campioni.
Mentre a livello teorico è del tutto equivalente scegliere l’una o l’altra strada, a livello analitico è
sicuramente conveniente immaginare di finestrare prima e poi campionare. Vediamo allora che succede nel
dominio della frequenza.
Come detto, l’operazione di finestratura della risposta all’impulso h(t) consiste nella moltiplicazione di
h(t) per un rettangolo di durata finita NT (ed altezza unitaria). Il segnale finestrato ha dunque espressione
 t 
h f ( t ) = h ( t ) ⋅ g ( t ) = s( t ) ⋅ rect

 NT 
dove ricordiamo che il rettangolo di finestratura è centrato in t=0, per cui si estende da -NT/2 a +NT/2.
Per calcolare lo spettro di hf(t), dobbiamo dunque convolvere i due spettri. Lo spettro di h(t) è noto ed è
un semplice rettangolo esteso da -fC/2 a fC/2; lo spettro del rettangolo g(t), applicando la definizione, vale
+∞
NT / 2
−∞
NT / 2
G (f ) = ∫ g ( t )e − j2 πft dt =
=
[
− j 2 πft
∫ e dt =
[
1
e − j2 πft
− j2πf
]
+ NT / 2
− NT / 2
=
1
− j2πf
]
sin (πfNT)
1
1
e jπfNT − e − jπfNT = sin (πfNT) = NT
j2πf
πfNT
πf
per cui lo spettro di h(t) finestrata è
H f (f ) = H(f ) * G (f ) = H(f ) * NT
Autore: Sandro Petrizzelli
6
sin (πfNT)
πfNT
NT
j 2 πf
 − j2 πf NT

2
2
e
e
−

=


Progetto di filtri FIR (parte I)
Adesso dobbiamo campionare hf(t), il che significa, nel dominio della frequenza, prendere lo spettro Hf(f)
appena calcolato e periodicizzarlo a passo fC=1/T:
H Cf (f ) =
La convoluzione tra H(f) ed il
+∞

∑ H(f ) * NT
n = −∞
sin (πfNT) 
πfNT  f = f − nf C
sin (πfNT)
dà origine ad uno spettro che somiglia ad H(f) periodicizzato,
πfNT
ma con in più delle oscillazioni sia in banda sia fuori banda, dovute alla infinita estensione del sin(f)/f: tale
spettro è, teoricamente, a banda infinita, per cui l’esito del successivo campionamento non può fare a meno
di presentare una sovrapposizione di repliche.
Per comprendere ancora meglio la situazione, possiamo provare a sviluppare l’espressione di quella
convoluzione:
sin (πfNT)
sin (π(f − s )NT)
1
sin (π(f − s )NT)
= ∫ H(s) ⋅ NT
H(f ) * NT
ds =
ds
∫
πfNT
π(f − s )NT
π −1 / 2T
f −s
−∞
+∞
+1 / 2 T
Questa espressione mostra sostanzialmente che stiamo sommando infinite repliche di un sinf/f.
Il nostro problema è quello di progettare un filtro essendo assegnata la maschera. Questo significa,
in altri termini, trovare un filtro FIR (per ipotesi), eventualmente a fase lineare, di complessità
minima, che soddisfi la maschera. Trovare il filtro di “complessità minima”
significa sostanzialmente trovare il filtro con risposta all’impulso
h(n) che sia più corta possibile3. Di conseguenza, il problema diventa quello di
stabilire quanti campioni del sin(t)/t dobbiamo considerare per avere un filtro che soddisfi la
maschera, ossia anche quanto deve essere lunga la finestra rettangolare.
All’aumentare del numero N di campioni, aumenta la durata N della finestra rettangolare e quindi
cambia anche la posizione degli zeri del corrispondente sin(f)/f: infatti, lo spettro della finestra
rettangolare è
sin (πfNT)
G (f ) = NT
πfNT
per cui gli zeri sono nei punti ±k/NT, con k intero positivo. All’aumentare di N, gli zeri si
avvicinano tra loro, il che significa che i lobi del sin(f)/f si stringono e si alzano, come evidenziato
nella figura seguente:
3
In realtà, la complessità di un filtro non dipende solo dalla lunghezza N della sua risposta all’impulso, ma anche dal numero di bit
necessari a codificare i singoli coefficienti di tale risposta all’impulso. Di conseguenza, il filtro a complessità minima è
rigorosamente quello in cui è minimizzato il valore della coppia composta dal numero N di campioni di h(n) e dal numero di bit
necessario a memorizzare tali campioni. Nei prossimi discorsi ci interessiamo invece principalmente al valore di N
7
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 4
Spettro della finestra rettangolare calcolato per 3 diversi valori di N e, precisamente, per N=2,3,5 (e
T=1 sec per semplicità): all’aumentare di N gli zeri si avvicinano, per cui i lobi si stringono e si alzano
Possiamo allora trarre subito una conclusione sull’ampiezza della banda di transizione. Abbiamo
infatti ricordato prima che la finestratura nel tempo corrisponde, in frequenza, alla convoluzione tra
la funzione di trasferimento rettangolare ed il sin(f)/f:
sin (πfNT)
sin (π(f − s )NT)
1
sin (π(f − s )NT)
= ∫ H(s) ⋅ NT
ds =
ds
∫
πfNT
π(f − s )NT
π −1 / 2T
f −s
−∞
+∞
H(f ) * NT
+1 / 2 T
Questa funzione va poi periodicizzata dato il campionamento.
La banda di transizione ha inizio quando, nell’effettuare la convoluzione, lo spigolo destro del
rettangolo coincide con il primo zero positivo (1/NT) del sin(f)/f:
t
Inizio della banda di transizione: si ottiene quando, nel calcolo della convoluzione, si calcola il
prodotto tra il rettangolo, che rimane fermo, ed il sin(f)/f posizionato con il primo zero positivo in
corrispondenza dello spigolo sinistro del rettangolo
Analogamente, la banda di transizione ha termine quando lo stesso spigolo va a coincidere con il
primo zero negativo (-1/NT):
Autore: Sandro Petrizzelli
8
Progetto di filtri FIR (parte I)
t
Fine della banda di transizione: si ottiene quando, nel calcolo della convoluzione, si calcola il
prodotto tra il rettangolo ed il sin(f)/f che si è posizionato con il primo zero negativo in corrispondenza
dello spigolo sinistro del rettangolo
La distanza tra gli zeri in -1/NT e +1/NT è pari evidentemente a 2/NT ed è quindi tanto minore
quanto maggiore è N. Deduciamo che, una volta identificata l’ampiezza della
band di transizione (imponendo che soddisfi le specifiche della
maschera),
risulta
automaticamente
fissato,
con
una
certa
approssimazione, il numero N di campioni da considerare.
Questo, però, non è sufficiente, dato che non sempre le altre specifiche (relative alla banda
passante ed a quella arrestata) sono soddisfatte una volta soddisfatte quelle relative alla banda di
transizione. Infatti, come abbiamo visto in precedenza, le oscillazioni nella banda passante
aumentano quanto più ci si avvicina alla banda di transizione e può anche capitare che esse
oltrepassino i limiti imposti dalla maschera, come ad esempio visualizzato nella figura seguente:
Quando le oscillazioni rischiano di oltrepassare i limiti della maschera? La risposta è semplice:
abbiamo infatti osservato prima che, aumentando il numero N di campioni, i lobi del sin(f)/f si
stringono (cioè decadono più rapidamente) e si alzano; di conseguenza, le oscillazioni nella banda
passante si attenuano, pur aumentando in numero, dato che sono dovute a code che diventano via via
più piccole all’aumentare di N; il problema è che, in prossimità della banda di transizione, le
oscillazioni più ampie si sono spostate nella banda di transizione stessa. Si ha cioè la situazione
illustrata nella figura seguente:
9
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 4
Riepilogando quanto detto fino ad ora, nel progetto di un filtro numerico passa-basso tramite il
metodo delle finestre, bisogna partire da una funzione di trasferimento prototipo (che noi abbiamo
individuato nel rettangolo), e poi decidere il numero di campioni da considerare nella corrispondente
risposta all’impulso.
Dettagli analitici
Come detto, il metodo delle finestre consiste nell’individuare una funzione di trasferimento
prototipo Hd(f) e nell’individuare la funzione di risposta all’impulso h(n), di lunghezza finita (filtro
FIR) che, tramite il proprio spettro H(f), meglio approssima Hd(f). Vediamo qualche dettaglio
analitico.
In primo luogo, se Hd(f) è la trasformata di Fourier di una ideale hd(n), il legame tra le due è
rappresentato dalle note formule di trasformazione-antitrasformazione (DTFT):
∞
H d (ω) = ∑ h d (n )e − jωn
n =0
h d (n ) =
π
1
H d (ω)e jωn dω
∫
2π − π
dove ovviamente ω=2πf è la pulsazione e dove si è considerata una funzione di risposta all’impulso
hd(n) di lunghezza teoricamente infinita ma causale (condizione necessaria per la fisica
realizzabilità).
La formula di antitrasformazione consente evidentemente di determinare hd(n) fissata che sia la
desiderata Hd(ω).
I problemi, invece, nascono dal fatto che noi vogliamo una hd(n) di lunghezza finita. Sia N tale
lunghezza, ossia il numero di campioni di cui vogliamo che sia composta la funzione di risposta
all’impulso h(n) del filtro che intendiamo realmente implementare.
Possiamo interpretare questa lunghezza finita tramite il troncamento di hd(n) ad opera di una
finestra rettangolare g(n) così definita:
1
g( n ) = 
0
n = 0,1,...., N - 1
altrimenti
Da qui segue evidentemente che la risposta all’impulso del filtro che stiamo implementando è
n = 0,1,...., N - 1
h ( n )
h (n ) = g(n ) ⋅ h d (n ) =  d
0
Autore: Sandro Petrizzelli
altrimenti
10
Progetto di filtri FIR (parte I)
A questo punto, il problema consiste tutto nel fissare il valore di N in modo che la funzione di
trasferimento H(ω) corrispondente ad h(n) approssimi quanto meglio possibile la desiderata Hd(ω) e
rispetti inoltre la maschera.
Andiamo allora a calcolare proprio H(ω):
∞
∞
N −1
n =0
n =0
n =0
H(ω) = ∑ h (n )e − jωn = ∑ g (n )h d (n )e − jωn = ∑ h d (n )e − jωn
E’ più comodo procedere direttamente nel dominio della frequenza: infatti, essendo h(n) il
prodotto tra g(n) e hd(n), la corrispondente H(ω) sarà la convoluzione tra lo spettro G(ω) della
finestra e lo spettro desiderato Hd(ω):
π
1
H d (ν)G (ω − ν)dν
H(ω) = G (ω) * H d (ω) =
2π −∫π
La funzione Hd(ω) è nota. Andiamo invece a calcolare lo spettro della finestra rettangolare
campionata, che corrispondente notoriamente alla periodicizzazione di un sin(f)/f:
G (ω) =
+∞
∑ g ( n )e
− jωn
n = −∞
N −1
= ∑ e − jωn =
n =0
− jωN
1− e
=e
1 − e − jω
N −1
− jω
2
 ωN 
sin 

 2 
 ω
sin  
2
Abbiamo ottenuto una funzione di trasferimento complessa, caratterizzata perciò da un modulo ed
una fase (quest’ultima nasce dal fatto che si è scelto un filtro causale, la cui risposta all’impulso
parte quindi dall’istante n=0 e non risulta perciò pari). Il modulo è
 ωN  sin  ωN 
sin 



2 
 2 

G (ω) =
=
 ω
 ω
sin  
sin  
2
2
- π ≤ ω ≤ +π
mentre invece la fase è lineare a pezzi:

N −1
− ω 2

G (ω) = 
− ω N − 1 + π

2
 ωN 
quando sin 
≥0
 2 
 ωN 
quando sin 
<0
 2 
Ci interessa in particolare il modulo. La figura seguente mostra il suo andamento per due distinti
valori di N, precisamente 31 e 61:
11
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 4
Modulo (in dB) dello spettro della finestra rettangolare campionata, diagrammato sia per N=M=31
campioni sia per N=M=61 campioni. Sull’asse delle frequenze è riportata la frequenza normalizzata,
ossia il rapporto tra la frequenza effettiva e la frequenza di campionamento fC. L’intervallo diagrammato
è quello del periodo fondamentale, con riferimento alle sole frequenze positive.
Dovremmo adesso sostituire l’espressione di G(ω) in quella di H(ω)......
Uso di particolari finestre
Per quanto visto fino ad ora, l’unico grado di libertà a nostra disposizione, nel progetto tramite il
metodo delle finestre, è il numero N di campioni da prendere per la funzione di risposta all’impulso
del filtro. In realtà, abbiamo un altro grado di libertà, rappresentato dalla scelta della finestra da
utilizzare per troncare la funzione di risposta all’impulso teorica, cioè il sin(t)/t:
t
Funzione di risposta all’impulso del filtro passa-basso ideale: è un sin(t)/t, campionato, di durata
infinita
Nei precedenti discorsi abbiamo considerato una finestra rettangolare. Possiamo però pensare di
utilizzare altri tipi di finestre. Ad esempio, possiamo pensare di utilizzare una finestra triangolare
(finestra di Bartlett), sempre di durata NT:
Autore: Sandro Petrizzelli
12
Progetto di filtri FIR (parte I)
t
Finestratura della risposta all’impulso del filtro passa-basso ideale tramite una finestra triangolare di
durata NT, la quale si ottiene notoriamente convolvendo due rettangoli uguali, di durata NT/2
L’espressione analitica di una simile finestra, di durata NT ed altezza unitaria, è la seguente:
N −1
2
N −1
2n −
g TR (n ) = 1 −
Se ragioniamo direttamente nel dominio delle frequenze, la finestratura corrisponde alla
convoluzione tra il rettangolo passa-basso ideale (sempre periodicizzato a causa del campionamento)
ed uno spettro del tipo sin2(f)/f2, che è fatto nel modo seguente:
Spettro di una finestra triangolare: essendo la finestra data dalla convoluzione tra due rettangoli
uguali, in frequenza si ha il prodotto di due sin(f)/f uguali, da cui quindi l’andamento caratteristico del
sin2(f)/f2 qui riportato
Ciò che si nota immediatamente è il decadimento più rapido dei lobi secondari rispetto al classico
sin(f)/f: il motivo è chiaramente nel fatto che tale decadimento avviene con f2 anziché con f.
Il decadimento più rapido rispetto al sin(f)/f comporta minori
problemi legati alle oscillazioni, il che rappresenta un sicuro vantaggio.
A fronte di questo, però, è ovvio che la finestra triangolare, al contrario di quello rettangolare, non
pesa ugualmente tutti i campioni della risposta all’impulso, ma conferisce peso via via minore ai
campioni via via più distanti dal vertice del triangolo (dove invece il peso è massimo): infatti, il peso
di ogni campione è dato dal prodotto tra il valore effettivo del sin(t)/t nell’istante considerato ed il
valore della finestra triangolare nello stesso istante:
13
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 4
t
A questo concetto è legato quello relativo all’ampiezza del lobo principale dello spettro della
finestra: se NT è la durata del triangolo, si ricava che la sua trasformata (non periodicizzata) è
 NT 
sin 2  πf

2 
 NT 

G TR (f ) = 

2
 2   NT 
 πf

2 

2
Infatti, dobbiamo considerare la convoluzione di due rettangoli di durata NT/2, per cui in
NT sin (πfNT / 2)
.
frequenza abbiamo il prodotto di due spettri dati da
2
πfNT / 2
Allora, nonostante la funzione GTR(f) decada a zero più velocemente di quanto facesse la
trasformata del rettangolo, l’ampiezza del lobo principale, cioè la distanza tra i primi due zeri, risulta
ora raddoppiata, dato che, come si vede anche nella figura seguente, i due zeri si trovano in ±2/NT:
Di conseguenza, ripetendo gli stessi discorsi fatti per la finestra rettangolare, deduciamo che
l’ampiezza della banda di transizione è raddoppiata. Il legame con il peso attribuito ai campioni è
evidente: dato che i campioni più lontani dal vertice del triangolo assumono peso minore, di fatto è
come se stessimo usando ancora una finestra rettangolare, ma con un minor numero di campioni e
quindi più “distesa” in banda.
In definitiva, il parametro da cui dipende l’ampiezza della banda di
transizione è l’ampiezza del lobo principale dello spettro della
finestra.
Per quanto riguarda l’ampiezza delle oscillazioni, invece, abbiamo osservato che quello che
importa è la velocità con cui decadono a zero le code. Questa velocità si quantifica, in genere, con la
misura di quanto il modulo del primo lobo secondario è inferiore rispetto al modulo del lobo
principale, cioè del picco:
Autore: Sandro Petrizzelli
14
Progetto di filtri FIR (parte I)
Misura della velocità di decadimento a zero delle code nel caso di un sin(f)/
Nel caso della finestra rettangolare, il cui spettro è un sin(f)/f come quello di figura, il rapporto tra
il modulo del picco principale ed il modulo del picco del primo lobo risulta essere di α=13 dB.
Nel caso, invece, della finestra triangolare, dove il decadimento è maggiore, il rapporto è di α=26
dB, doppio del precedente.
Possiamo anche non fermarci alla finestra triangolare, ma passare ad altri tipi di finestre. In
generale, la strada da seguire è quella di usare come finestre delle funzioni del tempo che siano
continue fino al più alto grado: il rettangolo è una funzione che presenta discontinuità di valore, in
corrispondenza chiaramente dei due spigoli; il triangolo presenta invece una discontinuità solo a
partire dalla derivata prima (la derivata del triangolo è il rettangolo); procedendo, potremmo
considerare una funzione che presenta discontinuità solo a partire dalla derivata seconda (e che
quindi è continua con la sua derivata prima): in questo caso, le code della sua trasformata andranno a
zero come 1/f3 e così via per discontinuità di grado sempre maggiore.
In effetti, il problema può anche essere considerato da un altro punto di vista. Abbiamo capito che
il fattore di principale disturbo è rappresentato dalle code dello spettro della finestra, per cui noi
cerchiamo una finestra la cui trasformata decada a zero il più rapidamente possibile. La funzione che
ha il miglior decadimento a zero, dopo il picco in f=0, è un impulso. Di conseguenza, a noi
andrebbe bene uno spettro idealmente impulsivo (che infatti
corrisponde ad una funzione costante nel tempo e di durata
infinita): moltiplicando lo spettro desiderato Hd(f) per tale impulso, otterremmo ancora Hd(f).
Dato che, nella realtà, non possiamo ottenere un impulso in frequenza (perché ci serve una risposta
all’impulso di durata limitata), possiamo allora ricercare uno spettro che sia quanto più simile
possibile ad un impulso. In quest’ottica, possiamo pensare di considerare più funzioni del tipo
sin(f)/f, combinate insieme in modo che gli effetti delle code dell’una siano attenuate dagli effetti
delle code degli altri.
Ad esempio, possiamo sommare due sin(f)/f, disposti in modo tale che il picco principale dell’uno
coincida con il primo zero dell’altro:
15
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 4
Se, prima di sommare, scaliamo di un fattore ½ le due funzioni e poi sommiamo, otteniamo il
seguente spettro:
Spettro della finestra ottenuta sommando due sin(f)/f, scalati di ½ e traslati in avanti e indietro,
rispetto all’origine delle frequenze, di 1/2NT
Il motivo del fattore di scala ½ sarà chiaro più avanti.
Per il momento, può essere utile ancora una volta confrontare questa funzione con il classico
sin(f)/f:
Confronto tra lo spettro della precedente figura e lo spettro della finestra rettangolare, ossia il sin(f)/f
Ancora una volta notiamo un maggiore decadimento delle code, ma notiamo anche un lobo
principale più piatto e più ampio.
Come verificheremo tra un attimo, lo spettro così ottenuto decade sostanzialmente ancora come
1/f2. L’unica differenza con la finestra triangolare riguarda il decadimento dei lobi secondari, che
adesso è minore: mentre nella finestra triangolare era α=26 dB, adesso si ottiene α=24 dB.
Prima di andare oltre, facciamo qualche passaggio analitico per giustificare questo risultato.
La combinazione dei due sin(f)/f considerati prima si può scrivere, analiticamente, nel modo
seguente:
1 
sin (πfNT) 1  
1  
* δ f −
 + δ f +

πfNT
2 
2 NT  
2 NT 
Da notare che abbiamo preferito scegliere una traslazione di ±1/2NT, piazzando cioè l’origine
delle frequenze al centro, per ottenere una funzione risultante che sia reale e pari. Questa scelta è
comoda, ma poi è necessario effettuare altre traslazioni per rendere il filtro causale e quindi
fisicamente realizzabile.
Autore: Sandro Petrizzelli
16
Progetto di filtri FIR (parte I)
A prescindere da questo, se abbiamo una convoluzione nel tempo, otteniamo un prodotto delle
sin (πfNT)
non è altro che la trasformata di un rettangolo di durata NT, mentre
frequenze: lo spettro
πfNT
l’altro spettro è banalmente la trasformata di un coseno di frequenza 1/2NT, per cui la finestra
corrispondente è
1 
 t  
t
rect
 cos 2π
 NT   2 NT 
Questo prodotto corrisponde dunque ad un coseno4 finestrato tra -NT/2 ed NT/2:
Finestra a coseno finestrato
Come detto prima, non abbiamo guadagnato molto rispetto alla finestra triangolare, in quanto
abbiamo sempre una discontinuità sulla derivata prima (code che decadono come 1/f2). Dato che la
durata del lobo principale (in frequenza) è la stessa è anche il valore di α è circa uguale a quello
della finestra triangolare (24 dB contro 26 dB), si preferisce generalmente combinare tre funzioni
sin(f)/f, secondo la seguente combinazione:
sin (πfNT)  1
1 
1  1 
1 
*  δ(f ) + δ f −

 + δ f +
πfNT
4 
NT  4 
NT 
2
Si usano cioè un sin(f)/f scalato di ½ centrato sull’origine delle frequenze e due altri sin(f)/f,
centrati su 1/NT e -1/NT (cioè in corrispondenza dei primi due zeri del sin(f)/f centrale) e scalati di
1/4:
4
Il fatto di aver ottenuto un coseno spiega il fattore di scala ½ usato per la composizione dei due sin(f)/f.
17
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 4
La composizione dà origine alla seguente finestra temporale:
Spettro della finestra a coseno rialzato finestrato (finestra di Hanning)
In questo caso si ottiene una discontinuità sulla derivata seconda, per cui le code decadono come
1/f3. L’ampiezza del lobo principale è quadrupla rispetto a quella della finestra rettangola e la
velocità di decadimento delle code è di gran lunga maggiore: risulta infatti α=36 dB.
Vediamo come è fatta la finestra nel tempo, il che significa che dobbiamo calcolare
l’antitrasformata dello spettro
sin (πfNT)  1
1 
1  1 
1 
*  δ(f ) + δ f −
 + δ f +

πfNT
4 
NT  4 
NT 
2
Possiamo allora riscrivere questo spettro nel modo seguente:
sin (πfNT) 1 
1 
1  
1  
* δ(f ) +  δ f −
 
 + δ f +
πfNT
2
2 
NT  
NT  
Da qui, riprendendo conti analoghi a quelli fatti prima, deduciamo che l’antitrasformata è
1 
 t  1

rect
t 
 ⋅ 1 + cos 2π
 NT  2 
 NT 
In questo caso, quindi, abbiamo finestrato un coseno, di frequenza 1/NT e di ampiezza 1/2, cui è
sommata una costante pari a sua volta ad 1/2: si parla perciò di finestra a coseno rialzato e
finestrato, detta anche finestra di Hanning. L’andamento temporale della finestra è dunque il
seguente:
Andamento temporale della finestra di Hanning (coseno rialzato finestrato)
Autore: Sandro Petrizzelli
18
Progetto di filtri FIR (parte I)
Varianti di questa finestra si ottengono semplicemente modificando, rispetto ad 1/2, i coefficienti
di peso della continua e del termine cosinusoidale:
1 

 t  
rect
t 
 ⋅ a + b ⋅ cos 2π
 NT 
 NT  
Ad esempio, una delle finestre più utilizzate è la cosiddetta finestra di Hamming, nella quale si
pone a=0.54 e b=0.46:
1 

 t  
rect
t 
 ⋅ 0.54 + 0.46 ⋅ cos 2π
 NT 
 NT  
L’andamento temporale di questa finestra è il seguente:
Andamento temporale della finestra di Hamming
Una finestra molto utilizzata in campo radaristico è invece quella che si ottiene per a=0.3 e b=0.7:
1 
 t  

rect
t 
 ⋅ 0.3 + 0.7 ⋅ cos 2π
 NT  
 NT 
Nella tabella seguente sono elencate varie funzioni finestra, direttamente in numerico, che
presentano caratteristiche spettrali apprezzabili per l’applicazione nel metodo delle finestre:
Nome
della
finestra
Funzione
di risposta
h(n)
all' impulso
N −1
2
N −1
2n−
Bartlett
Blackman
Hamming
Hanning
1−
0 . 42 − 0 . 5 cos
2πn
4πn
+ 0 . 0 . 8 cos
N −1
N −1
0 . 54 − 0 . 56 cos
2 πn
N −1
1
2πn 
 1 − cos

2
N −1
19
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 4
Nelle prossime due figure sono diagrammanti gli andamenti temporali di tali finestre
(considerando i campioni da n=0 ad n=N-1, in modo da garantire la causalità dei filtri e quindi la
fisica realizzabilità):
Andamento temporale delle finestre di Hamming, Hanning e Blackman, confrontate con la finestra
rettangolare
Andamento temporale delle finestre di Tukey, Kaiser e Lanczos, confrontate con la finestra di Bartlett
(triangolare)
Al fine di comprendere la bontà di queste finestre, sappiamo che è importante indagarne gli
spettri. I moduli di tali spettri sono allora riportati nelle figure seguenti, in funzione della frequenza
normalizzata f/fC ed al variare del numero di campioni:
Modulo (in dB), in funzione della frequenza normalizzata, della funzione di trasferimento della finestra
di Hanning, diagrammato per N=31 ed N=61 campioni
Autore: Sandro Petrizzelli
20
Progetto di filtri FIR (parte I)
Modulo (in dB), in funzione della frequenza normalizzata, della funzione di trasferimento della finestra
di Hamming, diagrammato per N=31 ed N=61 campioni
Modulo (in dB), in funzione della frequenza normalizzata, della funzione di trasferimento della finestra
di Blackman, diagrammato per N=31 ed N=61 campioni
Gli spettri di tutte le finestre appena illustrate hanno dei lobi secondari significativamente più
piccoli di quelli presenti nello spettro della finestra rettangolare. D’altra parte, a parità di numero N
di campioni, l’ampiezza del lobo principale è maggiore in queste finestre rispetto a quella della
finestra rettangolare. Di conseguenza, queste funzioni finestra producono minori oscillazioni in
banda passante, ma una banda di transizione più ampia. L’unico modo per ridurre l’ampiezza della
banda di transizione è quello di aumentare la durata della finestra, ossia aumentare la lunghezza N
della funzione di risposta all’impulso del filtro implementato.
Nella tabella seguente sono infine elencate le principali caratteristiche degli spettri delle funzioni
finestra citate:
21
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 4
Tipo di
finestra
Ampiezza approssimata
del lobo principale
Deca dim ento delle code
α(dB)
Rettangolare
Triangolare (Bartlett)
Hanning
Hamming
Blackman
4π/N
8π/N
8π/N
8π/N
12π/N
13
27
32
43
58
Conclusioni sul metodo delle finestre
In definitiva, il progetto di filtri FIR mediante finestre si basa sul fatto che è possibile guadagnare
sui lobi laterali, e quindi sulla oscillazione in banda e sulla attenuazione minima garantita fuori
banda, semplicemente cambiando i lobi della finestra. Se si considerano finestre con code che
decadono più velocemente, necessariamente si una un lobo principale più largo: quindi, a minore
oscillazione in banda e maggiore reiezione fuori banda corrisponde una banda di transizione più
graduale.
Il metodo delle finestre non è un metodo ottimo per il progetto di filtri FIR, ma ha il pregio di
essere molto semplice.
Esempio concreto
Per comprendere a pieno la tecnica delle finestre, consideriamo un esempio specifico.
Come detto più volte, il punto di partenza è nella scelta di una funzione di trasferimento prototipo,
che indichiamo con Hd(ω). Scegliamo perciò un filtro FIR, simmetrico, a fase lineare, passa-basso,
avente la seguente funzione di trasferimento:
 − jω N2−1

H d (ω) = e
0
0 ≤ ω ≤ ωT
altrimenti
dove conveniamo di indicare con ω la pulsazione 2πf normalizzata alla frequenza di campionamento
fC e quindi con ωT la pulsazione di taglio normalizzata.
ω=
2πf
fC
ωT =
2πf T
fC
Questo filtro è evidentemente un passa-basso ideale (modulo unitario in banda passante e modulo
nullo in banda arrestata), nel quale un anticipo temporale di (N-1)/2 passi di campionamento è stato
imposto per ottenere un filtro di lunghezza N.
Andiamo allora a ricavare la corrispondente funzione di risposta all’impulso, tramite una semplice
antitrasformazione di Fourier:
Autore: Sandro Petrizzelli
22
Progetto di filtri FIR (parte I)
h d (n ) =
ωT
ωT
1
1
H d (ω)e jωn dω =
e
∫
2 π − ωT
2π −∫ωT
N −1
− jω
2
 
N −1 
sin  ωT  n −

2  
 
N −1 


jωn
e dω = ... =
= 2f T ⋅ sinc ωT  n −

N −1
2  



π n −

2 

(dobbiamo per il momento escludere il campione che si ottiene per n=(N-1)/2 in quanto il Seno
Cardinale non è definito in tale punto, se non con un processo al limite)
Come previsto, abbiamo ottenuto una funzione di risposta all’impulso non causale e di durata
infinita. Andiamo allora a finestrare questa funzione, ad esempio con una finestra rettangolare di
durata NT. Otteniamo, per il filtro da implementare, una funzione di risposta all’impulso così
definita:
 
N −1
 n 
h (n ) = rect
 ⋅ h d (n ) = 2f T sinc ωT  n −

2  
 NT 
 
0 ≤ n ≤ N -1
n≠
N -1
2
Se scegliamo un valore dispari di N, l’istante n=(N-1)/2 esiste ed in tale istante possiamo
calcolare il valore di h(n) tramite un processo al limite: infatti, calcolando tale limite, il Seno
Cardinale va ad 1 e quindi
 N −1
h
 = 2f T
 2 
A questo punto abbiamo l’intero vettore della funzione di risposta all’impulso del nostro filtro,
per cui possiamo calcolare, analiticamente o tramite il calcolatore (DFT usando per esempio Matlab),
la corrispondente funzione di trasferimento. Nelle prossime due figure è per esempio illustrato
l’andamento del modulo di tale funzione di trasferimento, in funzione della frequenza normalizzata,
per due distinti valori (61 e 101) della lunghezza N:
Modulo (in funzione della frequenza normalizzata f/fC) della funzione di trasferimento del filtro FIR
progettato, nel caso di N=61 campioni per la funzione di risposta all’impulso
23
Autore: Sandro Petrizzelli
Appunti di “Elaborazione numerica dei segnali” - Capitolo 4
Modulo (in funzione della frequenza normalizzata f/fC) della funzione di trasferimento del filtro FIR
progettato, nel caso di N=101 campioni per la funzione di risposta all’impulso
Osserviamo fondamentalmente un buon comportamento del filtro in termini di rapidità di
passaggio dalla banda passante alla banda arrestata e di attenuazione in banda arrestata. tuttavia,
notiamo che, per entrambi i valori di N, ci sono delle oscillazioni eccessive al passaggio dalla banda
passante alla banda di transizione e da quest’ultima alla banda arrestata. Si osserva, in particolare, un
aumento della frequenza delle oscillazioni per N=101, mentre la loro ampiezza rimane
sostanzialmente invariata per i due valori di N.
Come sappiamo, queste oscillazioni (fenomeno di Gibbs) dipendono fondamentalmente dalla
larghezza dei lobi laterali dello spettro della finestra rettangolare. Allora, per ridurre tali oscillazioni
sia in banda passante sia banda arrestata, dobbiamo usare una funzione finestra che contenga
discontinuità più dolci rispetto a quelle brusche della finestra rettangolare. Per esempio, se usiamo
una finestra triangolare, con N=61, otteniamo quanto segue:
Modulo (in funzione della frequenza normalizzata f/fC) della funzione di trasferimento del filtro FIR
progettato per N=61 e tramite una finestra triangolare. Da notare che, rispetto ai due diagrammi
precedenti, le ordinate sono adesso in dB, il che consente di apprezzare meglio le oscillazioni in banda
arrestata
Le cose migliorano ulteriormente se usiamo finestre di Hamming o Blackman, sempre per N=61.
il risultato migliore si ottiene con la finestra di Blackman:
Autore: Sandro Petrizzelli
24
Progetto di filtri FIR (parte I)
Modulo (in funzione della frequenza normalizzata f/fC) della funzione di trasferimento del filtro FIR
progettato per N=61 e tramite una finestra di Hamming
Modulo (in funzione della frequenza normalizzata f/fC) della funzione di trasferimento del filtro FIR
progettato per N=61 e tramite una finestra di Blackman
Come queste figure mostrano chiaramente, abbiamo ottenuto sia l’eliminazione completa delle
oscillazioni in corrispondenza del passaggio dalla banda passante alla banda attenuata sia minori
oscillazioni in banda arrestata. Questo, però, al prezzo di una banda di transizione più ampia.
Autore: SANDRO PETRIZZELLI
e-mail: [email protected]
sito personale: http://users.iol.it/sandry
succursale: http://digilander.iol.it/sandry1
25
Autore: Sandro Petrizzelli