You are on page 1of 17

CAPITOLO 1

Regole di trasformazione:
trasformazione Fourier

1.1 – Trasformata di Fourier:: breve schema

Nella seguente tabella vengono riassuntivamente mostrate le principali regole di trasformazione


ed anti-trasformazione secondo Fourier.

Tempo-continui
continui Tempo-discreti Vettori
+∞ +∞
Trasformata {
F x (t ) = } ∫ x (t ) e − j 2 π ft
dt F {xn } = XS ( f ) = ∑ xn e − j 2π nft
−∞
X = DFT  x 
−∞

F −1 {xn } = T ∫ X ( f )e
+∞

{X ( f )} = ∫ X ( t ) e
j 2 π fnT
Antitrasformata F −1 j 2 π ft
df S
df x = IDFT  X 
−∞ 1/ T

rasformata di sequenze
1.2 – La ricerca di una trasformata

Esaminiamo ora più in dettaglio le regole di trasformazione per le sequenze di campioni e, in


particolare, per quelle non infinitamente lunghe1 (aventi, ovvero, forma di vettori, detti anche
array):

x = ( x1 , x2 , x3 , ..., xn ) →
F
← y = ( y1 , y2 , y3 , ..., yn ) (2)
F −1
Per raggiungere il nostro scopo dobbiamo
d preventivamente crearci delle regole nonché degli
operatori strettamente correlati alla definizione di vettore. Un esempio è quello di traslazione
temporale:

In figura si mostra l’effetto di una traslazione temporale di k “posizioni” e un primo inconveniente


che ne può derivare: mentre infatti il vettore corrispondente della sequenza {xn } è lungo n, quello
traslato {xn− k } contiene n+k dati. Siccome vogliamo che i due vettori abbiano la stessa lunghezza,
lunghezza
la scelta più logica è quella di far “rientrare” i campioni dalla parte opposta del vettore:
{xn } = {0,1, 2, 3, 4, 5,6,7} (n = 8)
{x } = {5,6,7 , 0,1, 2, 3, 4}
n− k
(k = 3)
In questo modo ci riconduciamo ad una specie di array circolare (v. figura sottostante,
sottostante caso n = 8):

1 Quelle infinite provocherebbero evidenti e prevedibili problemi di memoria.


2 I vettori x e y hanno la stessa lunghezza.
Risulta inoltre necessario prestare moltissima attenzione agli indici: la quantità n-k deve infatti
sempre indicare una delle posizioni “valide” dell’array3. Per far quadrare i conti esiste una
semplice regoletta pratica in grado di sistemare le cose sia per gli eventuali indici maggiori di n‒1
che per quelli minori di zero:
• se l’indice è maggiore di n‒‒1 si sottrae n finché non si giunge ad un indice valido;
• se l’indice è minore di 0 si aggiunge n finché non si approda ad una posizione valida.
Il principio di questo stratagemma è visionabile osservando le frecce del seguente schema (n( = 4):

Per sottolineare quest’aspetto scriviamo sempre la quantità n-k tra parentesi tonde; la seguente
scrittura
x( n− k )
indica infatti che n-k è da calcolarsi modulo N:: le due parentesi fanno quindi le veci dell’operatore
dell’
resto .
4

1.3 – Convoluzione
onvoluzione e convoluzione circolare

La convoluzione “classica”, formulata per sequenze infinite, agisce nel seguente modo:
ingresso {xn }n=−∞ risposta impulsiva5 {hn }n=−∞
n =∞ n =∞

+∞
uscita (convoluzione) yn = ∑xh k n− k
= {xn } ∗ {hn }
k =−∞

Coi vettori, nonostante con essi si commetta una forzatura nel definirne la convoluzione, la
definizione è assolutamente analoga:
vettore ingresso x = ( x0 , x1 , x2 , ..., xn−1 )

3 Ad esempio, ipotizzando una traslazione di k = 3 posizioni nel caso di vettori lunghi n = 8, il termine di indice 2 andrebbe a
collocarsi in posizione 2 − 3 = − 1 , cosa chiaramente assurda in quanto gli indici del nostro array vanno da 0 a n‒1.
4 Qualche esempio:

NUMERI NEGATIVI ( −1) 4 = 3 ( −3 ) 4 = 1 ( −5 ) 4 = 3 etc…

NUMERI POSITIVI ( 1) 4 = 1 ( 2 )4 = 2 ( 5)4 = 1 etc…


Si noti il parallelismo con la regola descritta poco sopra: il resto, coi numeri negativi, è calcolabile sommando tante volte n finché
non giungiamo nel range 0,4  , mentre coii numeri positivi si agisce sottraendo n fino al raggiungimento di un valore “valido”.
5 Il sistema è LTI (lineare tempo-invariante).
vettore risposta impulsiva h = ( h0 , h1 , h2 , ..., hn−1 )
N −1
vettore in uscita della rete yn = ∑ xk h( n− k ) n = 0, 1, ..., N − 1
k =0

Quella appena effettuata viene chiamata convoluzione circolare e simbolicamente viene così
rappresentata:
yn = xn N hn
(convoluzione circolare di lunghezza N)
La convoluzione circolare non è la convoluzione classica, ma può emularne le peculiarità nelle
macchine funzionanti coi vettori.

1.4 – DFT (Discrete Fourier Transform), il problema delle moltiplicazioni e la FFT

La DFT è l’analogo della trasformata di Fourier per i vettori:


vettore nel dominio dei tempi x = ( x0 , x1 , x2 , ..., xn−1 )
vettore nel dominio delle frequenze X = ( X0 , X1 , X2 , ..., Xn−1 )
N −1
1 N −1
q q
− j 2π n j 2π n
TRASFORMATA (DFT) X q = ∑ xn e
n= 0
N
ANTITRASFORMATA (IDFT) xn = ∑
N q =0
Xq e N

(con q = 0, N − 1 )


In notazione compatta si scrive:
X = DFT  x  x = IDFT  X 

La DFT può vantare una comoda rappresentazione matriciale: se, per definizione, poniamo

−j
w≜e N
si ha:
N −1
Xq = ∑ xn w nq
n=0

Per cui questa sarà la formula dei termini del vettore X:


q = 0 → X0 = x0 + x1 + x2 + ... + xN −1
q = 1 → X1 = x0 + x1w + x2 w 2 + ... + xN −1w N −1
q = 2 → X2 = x0 + x1w 2 + x2 w 4 + ... + xN −1w ( )
2 N −1


q = N − 1 → XN −1 = x0 + x1w N −1 + x2 w ( ) + ... + xN −1w ( )( )
2 N −1 N −1 N −1

Come si nota abbiamo un sistema lineare avente, come pesi, i termini w. Possiamo perciò formulare
una notazione matriciale:
 X0   1 1 1 1  x 
  1 w w 2
⋯ ⋯ w N −1  0 
X
 1     x1 
 2 ( N −1) 
 X  1 w 2
w 4
⋯ ⋯ w  x 
 2  =  2 
 ⋮  ⋮ ⋮ ⋮ ⋱ ⋮  ⋮ 
 ⋮    
   ⋮ ⋮ ⋮ ⋱ ⋮  ⋮ 
X   x 
1 w N −1 w ( ) ⋯ ⋯ w ( )( )  
2 N −1 N −1 N −1

 N −1 
 
 N −1 

Vettore delle Matrice simmetrica (matrice di Fourier) contenente i pesi Vettore
frequenze del tempo

X = W ⋅ x
Anche per la IDFT può essere scritta in notazione sintetica,
x = W −1 ⋅ X
col non trascurabile vantaggio che è facile calcolare la matrice inversa W −1 in virtù della sua
simmetricità:
1 1 1 1 
 −1 −2 − ( N − 1) 
1 w w ⋯ ⋯ w 
 
w ( ) 
− −
w −2 w −4
2 N 1
−1 1 1 ⋯ ⋯
W = ⋅
N ⋮ ⋮ ⋮ ⋱ ⋮ 
 
⋮ ⋮ ⋮ ⋱ ⋮ 
 − ( N − 1) − 2 ( N − 1) − ( N −1)( N −1) 
1 w w ⋯ ⋯ w 

Proprietà della DFT:


1. è lineare;
2. come abbiamo detto, si ha
DFT
N −1
 xn  n= 0 ⇒ X q
Se effettuiamo la trasformazione di una versione traslata del vettore x, tenendo presente
tutte le cautele che dobbiamo avere con gli indici (e ponendo quindi l’operatore resto presso
n-k),, otteniamo un ritardo (cioè la comparsa d di un fasore)) nel dominio delle frequenze:
N −1 DFT kq
− j 2π
x  ⇒ Xqe N
 ( n− k )  n=0
3. laa DFT di due vettori passati a convoluzione circolare dà un risultato analogo a quello che
avremmo nel caso tempo--continuo:
DFT  x n N y n  = X q Yq

Infine, cerchiamo di capire quanto sia onerosa la DFT da dall punto di vista computazionale. Per
effettuarla si richiedono: N moltiplicazioni il tutto per N volte
N ‒ 1 somme N −1
Xq = ∑ xn w nq q = 0, N − 1
n=0

[ (N‒1 somme) ∙ (N moltiplicazioni) ] ∙ N volte


Ovvero:
(N 2
)(
− N somme ⋅ N 2 moltiplicazioni )
Le somme possono essere fatte abbastanza agevolmente, vista l’ottimizzazione raggiungibile a
livello hardware;; il vero problema, invece, sono le
moltiplicazioni:
oltiplicazioni: per questo si è cercato di escogitare
un algoritmo (FFT, Fast Fourier Transform) in grado di
abbatterne.
Senza entrare nello specifico, la l FFT è in grado di
N N
passare da N 2 moltiplicazioni a log 2   (6).
2 2
L’unico inconveniente è la richiesta di un parametro
N che sia potenza del 2.

6 Esempio con N = 256: DFT  65536 moltiplicazioni, FFT  896 moltiplicazioni.


CAPITOLO 2
Stima dello spettro di segnali

2.1 – Stima dello spettro con la DFT

Supponiamo di avere un segnale x(t)


x tempo-continuo,
continuo, arbitrario e ad energia finita.

F
Segnale x(t) nel Trasformata X(f) nel
dominio dei tempi dominio delle frequenze

F −1

Come facciamo ad applicare la definizione di trasformata, che prevede un integrale, se non siamo
in grado di conoscere la forma matematica del segnale? Esiste un metodo numerico che permetta,
con una buona approssimazione, di stimare lo spettro di un segnale indipendentemente
dall’esistenza di un’espressione matematica
matemat chiusa per esso? La soluzione a questo problema
viene dalla DFT: prendiamo le funzioni x(t) e X(f) e periodicizziamole, l’una con periodo T e l’altra
con periodo F (l’unico vincolo è che si abbia F ⋅ T = N ∈ ℕ ).

n =∞
Xɶ ( f ) = ∑ X ( f − nF )
n =−∞

Dopodiché campioniamo N valori da un periodo di ciascuna delle due ripetizioni periodiche:


In seguito al campionamento abbiamo quindi riempito due vettori:
TEMPI xˆ = ( xˆ 0 , xˆ 1 , ..., xˆ N −1 ) generico elemento xˆ n = xˆ ( n∆t )
T 1
( ∆t = = = passo di campionamento nei tempi)
N F
FREQUENZE ( )
Xˆ = Xˆ 0 , Xˆ 1 , ..., Xˆ N −1 generico elemento Xˆ q = Xˆ ( q∆f )
F 1
( ∆f =
= = passo di campionamento nelle frequenze)
N T
Si noti che i passi di campionamento sono legati da tale importante relazione:
T F 1 F 1
∆t ∆f = = =
NN FN N
A questo punto possiamo effettivamente dare la relazione fra xɶ e X ɶ utilizzando DFT e IDFT1:
Xɶ = ∆t ⋅ DFT  xɶ 
1
xɶ = ⋅ IDFT  Xɶ 
∆t

L’algoritmo della DFT è uno strumento efficiente e semplice, ma nasconde un inconveniente: è


sempre necessario stare attenti a cosa succede quando periodicizziamo il segnale, visto che non
dobbiamo assolutamente provocare aliasing (cioè la sovrapposizione di alcune componenti) nel
dominio dei tempi. Se tuttavia il periodo T di ripetizione del segnale è lungo almeno il doppio
della durata del segnale stesso2, questo pericolo è scongiurato (v. figura).

Segnale
D

t
2D

Scelta di un periodo Scelta di un periodo


T1 troppo breve (< 2D) T2 adeguato (> 2D)

2D 2D

T1 T1 T1 t T2 T2 t

In generale, dunque, sarà bene evitare l’aliasing sia nei tempi3 (T grande) che nelle frequenze (F
grande): il rovescio della medaglia sta nel fatto che se T ed F sono scelti opportunamente, e sono
quindi abbastanza grandi, anche N lo sarà e questo porterà ad una maggiore difficoltà
computazionale.

1 La presenza dei termini ∆t e 1/ ∆t (non riscontrabili nelle definizioni) sta nel fatto che i campioni provengono dalle
ripetizioni periodiche dei segnali originari.
2 Come si vede dal grafico la durata è D: essa – ovvero – è intesa come dal tempo zero al termine del segnale, supposto

quest’ultimo di durata “simmetrica” rispetto all’origine del sistema di riferimento nel dominio dei tempi.
3 E se il segnale è troppo lungo o infinitamente duraturo? In tal caso dovremo accontentarci di una stima e accettare la

presenza di aliasing nei tempi.


Un altro parametro non da trascurare è la risoluzione del sistema: dobbiamo infatti
infatt avere
abbastanza campioni per una buona stima e, di conseguenza, un ∆f sufficientemente piccolo.

2.2 - Periodogramma

Il metodo del periodogramma permette la stima dello


spettro di un segnale di potenza finita che è stato
preventivamente troncato per ricavarne una porzione
T (segnale xT ( t ) avente energia finita, v. figura)4.
L’algoritmo del periodogramma ci permetterà poi di
valutarne la trasformata [legata allo
al spettro di
energia dalla relazione ε T ( f ) = XT ( f ) ] nonché lo spettro di potenza SX ( f ) :
2

xT ( t ) ⇒ XT ( f ) ⇒ SX ( f )
DFT periodogramma

Ecco la formula che sta alla base del principio adottato da questo metodo:
1  
f +∆f

SX ( f ) = lim XT ( f ) df 
1 2

∆f → 0 ∆f
 lim
T →∞ T ∫
 f 
Come si vede, si prende una porzione del dello spettro del segnale a potenza finita (da f a f + ∆f ,
grazie a un filtro) dopodiché si fa un’operazione “al limite” con T sempre più grande (tendente
all’infinito). Questa non è però sufficiente a convergere verso lo spettro di potenza5 SX ( f ) in
quanto, per riuscirci, è necessario fare un altro limite6, questa volta in f. Supponiamo ora (v.
(v nota 4)
che sia accettabile la semplificazione dell’integrale a:
SX ( f ) ≅ XT ( f )
1 2

T
Torniamo alla ricerca di XT ( f ) : dalla nostra
porzione di segnale (lunga T) prendiamo N
T
campioni, distanti ∆t = l’uno dall’altro,
N
stando attenti a non incappare nei soliti
inconvenienti (aliasing).
). Ogni campione può
chiaramente essere individuato in base alla sua
posizione nel tempo
xT ( n∆t ) = xn
e l’insieme completo di campioni può essere posto all’interno di un vettore x. A questo punto, se
usiamo la DFT, otteniamo:

4 Questo, chiaramente, ha l’inconveniente di non da poco di rendere impossibile (con questo metodo) la stima
dell’intero spettro del segnale, ma soltanto quella della porzione troncata.
5 In realtà, giunti a questo punto, stiamo convergendo a quello di energia.

6 Checché se ne dica, i limiti in T e in f non sono invertibili: non possiamo, insomma, scrivere

1  
f +∆f

SX ( f ) = lim lim XT ( f ) df  = lim XT ( f ) ≈ XT ( f )


1 2 1 2 1 2

T →∞ T ∆f →0 ∆f ∫ T →∞ T T
 f 
visto che il limite in T in generale non esiste nel campo delle funzioni ordinarie a causa delle oscillazioni della
funzione 1 X ( f ) 2 provocate dal troncamento sull’asse dei tempi. In più lo dice Chiani, dunque dev’essere vero per
T
T
forza (è l’argomento definitivo).
Xq = ∆t ⋅ DFT {x n }
A questo punto possiamo semplicemente sostituire e scrivere7:
∆t
SX ( q∆f ) ≅ XT ( f ) = ∆t ⋅ DFT {x n } = DFT {x n }
1 2 1 2 2

T T N 

periodogramma

Ripetendo queste prove, ma allargando sempre più la finestra, si dimostra la stima diventa man
mano più raffinata.
Il vantaggio del metodo del periodogramma sta
nel fatto che tale algoritmo è estremamente
semplice8 e produce una stima abbastanza
buona9; gli inconvenienti, invece, derivano
dall’impossibilità
all’impossibilità di invertire i limiti10 nella
formula generale vista nella pagina precedente
nonché dall’aver troncato il segnale, scelta che
produce il cosiddetto fenomeno di Gibbs11 (v. figura a destra). Aumentando di molto T, inoltre,
aumentiamo paurosamente la varianza e quindi l’entità di tali piccole oscillazioni

Per aggiustare questi inconvenienti esiste un trucco arguto: si divide il segnale in tanti intervalli
lunghi T (v. figura sottostante), dopodiché d’ognuno di essi si fa la stima dello spettro di potenza
S( ) ( q∆f ) tramite il metodo del periodogramma
k

Ogni stima, se presa singolarmente,


ente, è pessima. Facendo tuttavia lo spettro “medio” ricavabile da
tutte le stime

7 Il parametro ∆f è detto “risoluzione frequenziale” e vale 1/T.


1/
8 In MATLAB si può implementare in una singola riga:
S = (dt/N)*(abs(fft(y))).^2
9 Salvo casi particolari in cui è disastrosa.

10 In questo senso, il metodo del periodogramma è una “forzatura”.



11 Data una funzione periodica f,, che presenta dei punti di discontinuità,, la sua trasformazione con la serie di Fourier è

formata da infiniti termini. Quando si ricostruisce il segnale, se questa serie viene troncata, si ottengono delle
soprelevazione del valore della funzione ricostruita nell'intorno del punto di discontinuità: all'aumentare del numero
delle componenti della serie il valore di picco di detta soprelevazione rimane costante, mentre le oscillazioni
os alle quali
tali soprelevazioni si riferiscono si avvicinano al punto di discontinuità. (da Wikipedia)
1 L ( m)
S ( q∆f ) = ∑ S ( q ∆f )
L m =1
otteniamo un ottimo risultato, tanto migliore quanto più grande è L, ovvero il numero di medie
effettuate.
CAPITOLO 3
Filtri

3.0 – Sistemi LTI-TD,, sistemi causali

{x } 
n
→ {y }
→ LTI-TD  n

Per descrivere i sistemi LTI-TD,


TD, ovvero Lineari1 Tempo-Invarianti2 e Tempo-Discreti
Tempo 3
, nonché ogni
sistema LTI, è necessario definire la cosiddetta risposta impulsiva {hn } del sistema:
sistema nel nostro caso,
essa è definita come l’uscita che la rete produce quando in ingresso viene fornito un delta di Dirac
“in versione numerica”, ovvero
1 se n = 0
δn = 
0 altrove
pulsiva è molto importante in quanto è in grado di caratterizzare univocamente e
La risposta impulsiva
completamente il nostro sistema; esiste infatti la seguente relazione fra l’ingresso e l’uscita
{yn } = {xn } ⊗ {hn }
la quale, nel dominio delle frequenze, diventa ancora più significativa in quanto si ha che la
trasformata della risposta impulsiva è la funzione di trasferimento del sistema
{yn } = {xn } ⊗ {hn } 
F
→ YS ( f ) = XS ( f ) HS ( f )

(con HS ( f ) ≜ ∑he n
− j 2π nfT
)
n =−∞

Fra le reti LTI vi è l’importante classe delle reti causali, contenente tutte quelle reti per
p le quali
l’uscita non dipende dai valori futuri del segnale d’ingresso . Per le reti causali si ha:
4

hn = 0 se n < 0
La proprietà di causalità è importante in quanto è necessaria affinché il sistema si fisicamente
realizzabile.

3.1 – Realizzazione di
filtri digitali

I filtri digitali sono


sistemi LTI-TD causali
realizzati con linee di
ritardo. In figura a
destra ne vediamo un
esempio (filtro IIR
ovvero Infinite Impulse
Response, in quanto si
ha che la retroazione
può rendere la risposta

1 Hanno l’importante proprietà di soddisfare la sovrapposizione degli effetti


2 Un sistema tempo-invariante
invariante è un sistema i cui parametri non dipendono dal tempo, ma sono costanti.
3 In uscita
scita e in ingresso, ovvero, è presente una sequenza di campioni (quale
quale ad esempio un segnale digitale).
digitale
4 In pratica significa che la rete comincerà a rispondere dall’istante 0 in avanti, e non prima di conoscere cosa avrà in ingresso.
ingre
impulsiva non limitata nel tempo). Di questo filtro possiamo nel seguente modo scrivere la
caratteristica ingresso-uscita:
M −1 N
yn = xn b0 + xn−1b1 + ... + xn− M +1bM −1 − yn−1a1 − yn− 2 a2 − ... − yn− N aN =
    ∑ bk xn− k − ∑ ak yn− k
k =0 k =1
ramo diretto ramo in retroazione

Inoltre, come si vede anche dallo schema, le linee di ritardo memorizzano gli ultimi M campioni
dell’ingresso e gli ultimi N campioni dell’uscita.
Se ora effettuiamo la trasformata di Fourier:
M −1 N
YS ( f ) = ∑ bk XS ( f ) e − j 2π kfT − ∑ akYS ( f ) e − j 2π kfT
k =0 k =1

Per cui si ha che: 5

M −1

YS ( f ) ∑b e k
− j 2π kfT

HS ( f ) ≜ = k =0

XS ( f ) N
1 + ∑ ak e − j 2π kfT
k =1

Un filtro IIR è facilmente analizzabile ma difficilmente sintetizzabile6.

Se ak = 0 , per ogni k da 1 a N,, allora non esiste il ramo di retroazione e la struttura diventa di tipo
FIR (Finite Impulse Response); reti come quest’ultima vengono anche dette a risposta impulsiva finita
in quanto, se diamo in ingresso al sistema il segnale impulsivo (delta di Dirac),
Dirac) la risposta risulta
essere la somma – chiaramente finita – di tutti i coefficienti del ramo diretto, come mostrato nella
figura seguente: l’impulso, di valore unitario, “scorre” infatti tutti blocchi
locchi della linea
li di ritardo e,
moltiplicato blocco per blocco per il coefficiente b relativo al moltiplicatore coinvolto, viene
portato al sommatore da ogni ramo verticale.

IN USCITA: yn = b0 + b1 + ... + bM −1 

5 Tale rapporto è stato così ricavato:


M −1 N M −1 N
YS ( f ) = ∑ b X ( f )e
k S
− j 2 π kfT
− ∑ akYS ( f ) e − j 2π kfT  XS ( f ) ∑ bk e − j 2π kfT = YS ( f ) + YS ( f ) ∑ ak e − j 2π kfT
k =0 k =1 k =0 k =1
M −1
 N

XS ( f ) ∑ bk e − j 2π kfT = YS ( f )  1 + ∑ ak e − j 2π kfT 
k =0  k =1 
M −1

YS ( f ) ∑b e k
− j 2π kfT

= k =0

XS ( f ) N
1 + ∑ ak e − j 2π kfT
k =1
6 Per farlo sono necessari complicati algoritmi,
algoritmi dei quali MATLAB è fortunatamente dotato.
3.2 – Vantaggi e svantaggi dei filtri digitali

FILTRI FIR
☺ Vista l’assenza di anelli di retroazione, sono sempre stabili.
☺ Scegliendo opportunamente (cioè simmetricamente) i coefficienti b siamo
sia sicuri che la fase è
lineare, dunque il filtro risulta essere non distorcente.
distorcent
☺ Implementando un FIR è necessario rappresentare in bit i pesi b: questo significa che
bisognerà quantizzarli, con la conseguente introduzione di un’approssimazione che – in
realtà – non si rivela mai preoccupantemente drammatica. La quantizzazione dei pesi, p
quindi, è facilmente controllabile e non porta inconvenienti rilevanti.
 Sono un po’ più dispendiosi rispetto ai filtri IIR e, per mancanza di un anello di retroazione,
meno efficienti rispetto a questi ultimi.

FILTRI IIR
☺ Maggiore efficienza.
☺ La sintesisi può essere effettuata “traducendo” un filtro analogico che soddisfa particolari
requisitii (esistono dei metodi fatti apposta):
apposta) tale passaggio fra analogico e digitale risulta
facile, veloce e indolore.
 La stabilità non è sempre verificata: nei casi peggiori può infatti capitare che il filtro prenda
ad oscillare o che l’uscita si saturi.
 La quantizzazione dei pesi, a differenza del caso FIR, può portare qualche grattacapo.

3.3 – Scelta numerica dei coefficienti nei filtri FIR

I coefficienti dei filtri


ri FIR vengono scelti con un criterio di simmetria7 (così la fase è lineare):
lineare)
• se i coefficienti b sono in numero M dispari si sceglie il termine centrale come riferimento
rispetto al quale tutti gli altri sono simmetrici:

• se i coefficienti sono in numero


numer pari, esistono coppie di elementi simmetrici (senza
l’elemento centrare a fare da “asse”):

7Nelle figure seguenti


guenti graficheremo le risposte impulsive dei filtri, sfruttando un modo molto comodo per rappresentare, in un
diagramma, i coefficienti b di un FIR.
Volendo esprimere le stesse risposte impulsive tramite analoghe sequenze aventi la proprietà di
essere simmetriche rispetto all’origine (risposte {hn′ } con valori anche negativi e quindi
appartenenti a filtri non causali,, v. figura seguente)
seguente

è sufficiente operare una traslazione (= moltiplicazione per un fasore):


M −1
HS ( f ) = FS {hn } = FS {hn′ } e
− j 2π Tf
2

Sicuramente si ha che
 M −1 M −1 
G ( f ) = FS {hn′ } ∈ ℝ
 ⇒ HS ( f ) = FS {hn′ } e ( )
− j 2π Tf − j 2π Tf
2
= G f e 2 
    
 ∈ℝ 
visto che, per costruzione, la successione {hn′ } è reale e simmetrica rispetto all’origine8.
A questo punto esistono due possibilità:
• se G ( f ) > 0 allora
M −1
arg  HS ( f )  = 0 − 2π
Tf ← argomento lineare con la frequenza
2
quindi soddisfiamo la condizione di non distorsione per la fase del filtro. Il parametro
M −1
t0 = T
2
è il ritardo prodotto dal sistema: si nota che esso cresce linearmente col numero M di prese
del filtro;
• se G ( f ) < 0 (filtro invertente)
invertente abbiamo
M −1
arg  HS ( f )  = π − 2π
Tf
2
dunque G ( f ) risulta essere un numero reale e negativo.

3.4 – Tecniche di sintesi per il calcolo dei coefficienti

Le variabili in gioco nella sintesi dei filtri FIR sono:


• il numero di prese M
• i coefficienti b0 , b1 , b2 ,..., bM −1

8 E quindi scatta la proprietà della trasformata di Fourier, che è sicuramente reale per segnali reali e simmetrici.
Variando questi parametri, la funzione di trasferimento H ( f ) del filtro cambia forma9, ma
dobbiamo tuttavia avere un criterio di riferimento in base al quale valutare se tale f.d.t. è idonea al
compito per il quale il filtro è stato progettato10. A tal fine, vengono definite delle maschere come
quella in figura seguente11

Se il modulo della funzione di trasferimento è interamente contenuto all’interno della zona bianca
ritagliata
ata dalla maschera allora il filtro è idoneo allo scopo; in caso contrario sarà invece necessaria
una nuova sintesi dei coefficienti. Come si vede, vi sono alcuni importanti parametri che
concorrono a definire univocamente una maschera di questo tipo:
• la frequenza di taglio ft ;
• la banda di transizione ∆F , entro la quale la f.d.t. deve “degradare” a zero;
• i parametri δ 1 (2 δ 1 = tolleranza in banda passante) e δ 2 (= tolleranza in banda attenuata).
Da questi si possono ricavare altri due importanti parametri:
• il ripple in dB ( = tolleranza in banda passante in dB):
dB)
1 + δ1
RIPPLEdB = 20 log 10
1 − δ1
• l’attenuazione in banda attenuata12:
AS ( dB ) = −20 log 10 δ 2

Per un sistema passa-banda


banda il principio della maschera è lo stesso anche se ovviamente la sua
forma è diversa:

9 Nel caso si decidesse di farne il plot per vederne la forma, si tenga presente che MATLAB normalizza l’asse delle frequenze
rispetto alla frequenza di campionamento fS .
10 Mettiamo in chiaro fin dall’inizio che la funzione di trasferimento di un filtro ideale è impossibile da ricavare senza un numero
nu
infinito di prese (e dunque non può essere sintetizzata attraverso un filtro reale). Dobbiamo quindi avere un margine di tolleranza
to
entro il quale poterci muovere per ottenere il risultato desiderato.
11 Si riferisce chiaramente ad un filtro passa-basso.
basso.
12 Indica di quando deve calare la H in banda attenuata (rispetto al valore
valore avente in banda passante).
3.5 – Primo metodo per la sintesi dei FIR: metodo delle finestre

Supponiamo di voler sintetizzare una certa funzione di


trasferimento, propria di un filtro passa-basso
passa (v. figura
a fianco).. Come viene fatto notare, l’antitrasformata di
una rect [ Hd ( f ) ] nel dominio delle frequenze è una sinc
[ hd ( t ) ] nel dominio dei tempi; inoltre, tale sinc è anche
la risposta impulsiva del sistema e, avendo valori
diversi da zero anche per t < 0, caratterizza un sistema
non causale (e quindi non realizzabile).
In effetti tale funzione
di trasferimento può
essere implementata
solo idealmente: ora
tuttavia trascureremo
questo particolare e,
solo per il momento, supporremo che un filtro del genere sia realizzabile (la metodologia è
comunque identica rispetto ad un caso reale).
reale)
A questo punto effettuiamo un campionamento sulla hd ( t ) , operazione che – nel dominio delle
ɶ ( f ) dello spettro H ( f ) :
frequenze – si ripercuote nella ripetizione periodica H d d

Campioni della risposta


impulsiva

ɶ ( f ) altro non è che la trasformata della sequenza h ( n ) , possiamo scrivere:


Siccome la H d d

Hɶ d ( f ) ≜ ∑ h ( n) e d
− j 2 π nF

n =−∞

Notiamo che questa espressione è molto simile


simile alla f.d.t. di un filtro FIR che, lo ricordiamo, era
M −1
H (F) = ∑b e k
− j 2 π kF

k =0

Le differenze fra le due espressioni, tuttavia, ci sono eccome:


• la H ɶ ( f ) è propria di un filtro non causale, mentre un qualsiasi filtro FIR è chiaramente
d

causale (cioè realizzabile);


• la hd ( n ) non è limitata nel tempo e quindi è una sequenza infinita.
Possiamo tuttavia eliminare “in blocco” queste due differenze con alcune semplici operazioni:
trasliamo la hd ( n ) verso destra introducendo un ritardo13 t0 , dopodiché la tronchiamo
tronchiam “ambo i
lati” per renderla limitata nel tempo (e poter estrarre un numero finito di campioni da essa),
essa)
avendo cura di eliminare tutti i valori nel semiasse negativo delle ascisse per rendere causale il
relativo filtro (v. figura sottostante),
sottostante) che in seguito
ito a queste operazioni non avrà comunque
cambiato la propria natura di passa-basso.
passa

A questo punto ha senso la scrittura


bn = hd ( n )

troncata e traslata

ed è possibile collegare le due relazioni 14

∞ M −1 M −1

∑ hd ( n ) e
− j 2π nF
 ⇔ ∑b e k
− j 2π kF

n = −∞ 0 k =0
 traslazione
troncamento

Quindi abbiamo ricavato il legame fra la risposta impulsiva campionata hd ( n ) del nostro filtro
ideale15 passa-basso
basso e i coefficienti b nel filtro FIR (sempre passa-bassobasso16) che ci piacerebbe
realizzare: in pratica, abbiamo trovato il modo di effettuare una sintesi dei coefficienti17.

Dove stanno gli inconvenienti?


Anzitutto l’aver troncato la hd ( n ) , procedura effettuata moltiplicando la funzione originaria
origina per
una finestra rettangolare nel
dominio dei tempi, ha
portato ad un errore che, nel
dominio delle frequenze, si
ripercuote sotto forma del
già esaminato fenomeno di
Gibbs, il quale (sempre nel
dominio delle frequenze) ha
origine dalla convoluzione
fra il treno di impulsi
ɶ ( f ) e la finestra rettangolare (v. figura a fianco).
rettangolari della H d

13 Nel dominio delle frequenze il ritardo, come al solito, si tradurrà una moltiplicazione per un fasore.
14 Si prendono M campioni del nuovo segnale traslato e troncato (gli estremi della sommatoria sono stati modificati), in modo da
avere abbastanza coefficienti b per progettare il FIR a M prese.
15 Cioè non causale.

16 Realizzabile e quindi causale.

17 La funzione di MATLAB che effettua tutte queste operazioni è la fir1().


Se le oscillazioni di Gibbs sono così accentuate da farci violare la maschera chiaramente i conti
sono tutti da rifare, quindi è necessario
necessari prestare grande attenzione a questo particolare.
particolare Al limite,
per attenuare le oscillazioni, si può sempre utilizzare una finestra non più rettangolare ma
“smussata”:

Allo stesso scopo, esistono anche altri tipi di finestre18.

3.6 – Secondo metodo per la sintesi dei FIR: algoritmo di Remez

L’algoritmo di Remez è automatizzato e


implementato in MATLAB: infatti, una volta che
sono stati specificati i parametri δ 1 , δ 2 , F1 e F2 , il
calcolatore fa tutto in maniera autonoma.
Generalmente il numero di prese di un filtro FIR
così sintetizzato è inferiore rispetto a quello
necessario dovuto alla sintesi tramite il metodo
delle finestre.

18 Alcuni nomi: Hanning, Hamming, Bartlett, Boxcar… Si veda l’help di MATLAB per maggiori informazioni.