Trasformata Discreta di Fourier 5

Transcript

Trasformata Discreta di Fourier 5
Steeper Rolloff
Dalle analisi precedenti, è chiaro che, modificando i coefficienti della finestra
Blackman, si ottiene una caduta anche più ripida di 30 dB/ottava
Occorre cancellare due coppie di zeri da entrambi i lati per z = 1 scegliendo i
coefficienti tali che:
ω(0)= ω(1)= ω(N-1)= ω(N-2)=0,
N − 1⎞
mentre si pone il valore centrale pari all’unità in corrispondenza di ω ⎛⎜
⎟
2
⎠
⎝
Ossia si impongono tali condizioni nella:
ω J (n) = a + b cos
2πn
4πn
+ c cos
,
N −1
N −1
n = 0, 1,. . . , N − 1.
M. Usai
(7.3.10)
Circuiti digitali 7_4
1
scegliendo a, b e c tali da soddisfare le equazioni lineari
N − 1⎞
ω J ⎛⎜
⎟ =1
a − b + c = 1,
⇔
a + b + c = 0,
⇔
⎝ 2 ⎠
ω J (0) = 0
⇔
ω J (1) = 0
a + b cos
2π
4π
+ c cos
=0
N −1
N −1
(7.3.7)
Diversamente dalle finestre precedenti, i valori dei coefficienti sono legati
alla lunghezza della finestra N e che nel caso di interesse generale, per grandi
valori di N queste equazioni sono mal combinate e la loro soluzione numerica
è difficile.
Per risolvere questo inconveniente riscrivendo la funzione della finestra nella
forma alternativa:
πn
2πn
+ d sin 2
ω J (n) = sin
,
(7.3.8)
N −1
N −1
non si hanno tali difficoltà numeriche risolvendo per d.
M. Usai
Circuiti digitali 7_4
2
Si noti che :
ωF(0)=WF(N-1)=0
e il valore centrale ωF[(N-1)/2] è uguale all’unità, come
richiesto, quindi con il coefficiente d si ha bisogno solo di soddisfare
il rimanente vincolo:
ω F (1) = sin 2 ( x) + d sin 2 (2 x) = 0
(7.3.9)
per x=π/(N-1).
M. Usai
Circuiti digitali 7_4
3
La trasformata della finestra risultante è mostrata nella figura 7.11 e si
osserva che il picco del lobo laterale è – 46 dB la larghezza di banda è circa
la stessa come per la finestra Blackman e la velocità di caduta è in realtà
30 dB/ottava. Come la lunghezza della finestra N aumenta, d, a, b e c si
avvicinano rapidamente ai valori asintotici.
Figura 7.11 Modulo della trasformata della finestra WF’(ω), che mostra
un picco del lobo laterale principale di –46dB e una pendenza di 30dB/ottava.
M. Usai
Circuiti digitali 7_4
4
Per N grande, x nella (7.3.9) è piccolo e quindi sinx ≈x e sin2x ≈2x, d ≈-0.25 e la
forma asintotica della funzione finestra diventa:
ω F (n) = sin 2
πn
N1 − 1
= 0.375 - 0.5 cos
− 0.25 sin 2
2πn
N1 − 1
4πn
2πn
+ 0.125 cos
,
N1 − 1
N1 − 1
n = 0, 1, . . . , N1 − 1
(7.3.10)
Si noti la semplice forma dei coefficienti asintotici. Ciò è stato notato
precedentemente da Marshall e Temes [6], che derivarono la finestra come il
quadrato della finestra di Hanning cioè,
ω F ( n)
= ω N2 (n)
= sin
4
πn
.
(7.3.11)
N −1
Essi osservarono che questa finestra come quella di Hanning è facilmente
implementabile nel dominio della frequenza (trasformate DFT) attraverso
~
X
w
M. Usai
( k ) =
1
16
1
−
4
~
X ( k
~
X ( k
1 ~
X ( k − 1) +
4
1
~
+ 1) +
X ( k + 2 ).
16
− 2 ) −
Circuiti digitali 7_4
3 ~
X ( k ) +
8
5
7.4 Algoritmi FFT
Decimazione nel tempo (Decimation in time)
La larga applicazione delle DFT alla convoluzione e all’analisi
spettrale è dovuta in larga misura alla riscoperta nel 1960 di
Cooley e Tukey dell’algoritmo veloce per calcolarla noto come:
l’algoritmo Fast Fourier Transform (FFT).
Esistono diverse variazioni nella formulazione di questo algoritmo,
si considerano inizialmente gli approcci base per N=2r e per r
intero.
M. Usai
Circuiti digitali 7_4
6
Per calcolare gli N valori della trasformata discreta di Fourier
per una sequenza di N campioni sono necessarie NxN
moltiplicazioni complesse (senza tener conto delle somme ,
che occupano un tempo macchina trascurabile rispetto alle
moltiplicazioni).
Una elaborazione della struttura dell’operazione di
trasformazione della DFT, consente di trovare un algoritmo
che riduce sensibilmente il numero delle moltiplicazioni.
M. Usai
Circuiti digitali 7_4
7
Per ottenere le formule relative alla FFT nel tempo – Decimazione nel tempo
(Decimation in Time ) – si considera la trasformata discreta di un segnale
x (n) data dalla seguente espressione:
. ~
2π
X% (k ) =
N −1
kn
x
(
n
)
W
con W = e
%
∑
−j
N
n =0
e in forma matriciale:
⎡ X (0) ⎤ ⎡1
1
⋅
⋅ 1⎤ ⎡ x(0) ⎤
⎢ X (1) ⎥ ⎢
⎥ ⎢ x(1) ⎥
1
2
W
W
⋅ ⋅⎥ ⎢
⎢
⎥ ⎢1
⎥
⎢ X (2) ⎥ ⎢
2
4
⎥ ⎢ x(2) ⎥
W
W
1
⋅
⋅
⎢
⎥=⎢
⎥ ⋅ ⎢ x(3) ⎥
⋅
⎥
⎢
⎥ ⎢1
⋅ ⋅⎥ ⎢
W3
W6
⎥
⎢
⎥ ⎢
⋅
⎥ ⎢ ⋅
⋅ ⋅⎥ ⎢
⎥
⎢
⎥ ⎢⋅
⋅
⋅
⋅
⎥
⎢
⎥ ⎢
⎥ ⎢
2( N −1)
( N −1)
W
⋅ ⋅ ⋅ ⎦ ⎣⎢ x( N − 1) ⎥⎦
⎢⎣ X ( N − 1) ⎥⎦ ⎣1 W
Nella matrice NxN la 2° riga rappresenta un fasore che ruota di un N-esimo
2π
⎛ 1
−j
di giro alla volta ⎜ W = e N
⎜
⎝
e così via.
M. Usai
4π
⎞
⎛ 2
−j
⎟ , la 3° riga un fasore che ruota a velocità doppia ⎜ W = e N
⎟
⎜
⎠
⎝
Circuiti digitali 7_4
8
⎞
⎟
⎟
⎠
x (n) in due
Il primo approccio –Decimazione nel tempo– si basa nel separare ~
sequenze di lunghezza N/2 composta da campioni con indice pari e dispari
rispettivamente.
La trasformata discreta viene fatta cioè come somma di due trasformate di
lunghezza pari alla metà della sequenza iniziale, cioè:
X% (k ) =
=
=
N −1
∑
n =0
∑
x% (n)W kn +
n even
( N / 2) −1
∑
m =0
( N / 2) −1
∑
m=0
M. Usai
x% (n)W kn
∑
x% (n)W kn
n odd
x% (2m)W 2 km +
( N / 2) −1
∑
x% (2m + 1)W ( 2 k +1) m
m=0
( N / 2) −1
k
x% (2m)(W 2 ) km + W
∑
m =0
x% (2m + 1)(W 2 )km .
Circuiti digitali 7_4
(7.4.1)
9
Ciascuna di queste somme è facilmente identificabile come una DFT a N/2
punti della rispettiva sequenza perché:
W 2 = e − 2 j ( 2π / N ) = e − j 2π /( N / 2)
I coefficienti complessi
Wk =
⎛ − j 2π
⎜e N
⎜
⎝
k
2π k
⎞
−j
⎟ =e N
⎟
⎠
rappresentano vettori rotanti e sono noti come:
fattori di rotazione (twiddle factors).
M. Usai
Circuiti digitali 7_4
10
X% (k ) =
( N / 2) −1
∑
m =0
x% (2m)(W 2 ) km + W k
( N / 2) −1
∑
m=0
x% (2m + 1)(W 2 ) km
La DFT di ordine N è scomposta nella somma della DFT di ordine N/2
dei punti di ordine pari e della DTFT dei punti di ordine dispari
moltiplicata per il coefficiente W2km, la DFT è espressa come somma di
due trasformate discrete di lunghezza pari alla metà della sequenza
iniziale.
Poiché le trasformate di ordine N/2 sono periodiche con periodo pari
alla metà di quello della sequenza iniziale, quando l’indice n supera il
valore N/2-1, la DFT di ordine N/2 si ripetono, mentre il fasore W2km
continua nella sua rotazione.
Il procedimento può essere ripetuto diverse volte fino d arrivare alle
DTF di ordine 2.
M. Usai
Circuiti digitali 7_4
11
Quindi se si valutano:
~
X
la DFT di e ( k ) per la sequenza di indice pari
~
x (0), ~
x (2),..., ~
x ( N − 2)
e
~
X
la DFT 0 ( k ) per la sequenza di indice dispari
~
x (1), ~
x (3),..., ~
x ( N − 1)
si può trovare la DFT totale dalla (7.4.1) combinando le DFT come:
~
~
~
X (k ) = X e ( k ) + W k X 0 (k ).
(7.4.3)
~
~
X
(
k
)
X
Si noti che le DFT di e
e
0 ( k ) a N/2 punti, sono periodiche in k con
periodo N/2, e quindi non è necessario calcolare nuovamente i loro valori per k
≥ N/2, noti quelli per 0≤ k< N/2.
M. Usai
Circuiti digitali 7_4
12
La trasformata discreta viene calcolata come la somma di due
trasformate di lunghezza pari alla metà della sequenza iniziale.
Questa idea base viene quindi applicata più volte sino a quando
rimane da valutare una DFT a due punti.
Cioè ciascuna DFT a N/2 punti è calcolata combinando due DFT a
N/4 punti ciascuna delle quali viene valutata combinando 2 DFT a N/8
punti eccetera per r stadi sino a N=2r.
Le DFT iniziali a 2 punti richiedono solo coefficienti uguali a ± 1,
come descritto in figura 7.13 e quindi realizzabili con strutture
semplici.
La totale implementazione della decimazione nel tempo della FFT a 8
punti è mostrata in figura 7.13.
M. Usai
Circuiti digitali 7_4
13
Si noti la regolarità dei fattori di rotazione Wk delle DFT successive.
Questi coefficienti complessi sono immagazzinati in memoria e letti
per le moltiplicazioni come richiesto.
~
Si noti anche che, benché l’output DFT di X (k ) è in ordine naturale, la
matrice di input ~
x (n) non lo è.
Questo ordinamento dell’input è noto come bit-reversed-order (ordine
dei bit rovesciati) perché la sequenza di indice n nella forma binaria in
ordine naturale diventa questa sequenza quando i bits rappresentanti
ciascun valore di indice vengono scambiati.
M. Usai
Circuiti digitali 7_4
14
Per esempio, in caso di 8 punti,
l’ordine naturale:
000, 001, 010, 011, 100, 101, 110, 111
o
0, 1, 2, 3, 4, 5, 6, 7,
diventa
000, 100, 010, 110, 001, 101, 011, 111,
o
0,
4, 2, 6, 1, 5, 3, 7,
come mostrato nella figura 7.13.
Figura 7.13 Diagramma relativo a 8 punti di decimazione nel tempo
FFT, con input con ordine dei bit rovesciati.
M. Usai
Circuiti digitali 7_4
15
Risparmio computazionale (Computational saving )
Ora si vuole stimare il risparmio computazionale fornito dall’algoritmo FFT su
una implementazione diretta di DFT.
~
Dalla definizione, ciascun campione DFT X ( k ) è una somma di N prodotti, e
ci sono N campioni da valutare, così il calcolo diretto della DFT dovrebbe
richiedere al più N2 moltiplicazioni e addizioni complesse.
Con l’algoritmo FFT, il numero di moltiplicazioni e addizioni complesse è
dell’ordine di N lg2N , con
N lg2N << N2
Infatti nell'algoritmo FFT ci sono r=lg2N stadi, ciascuno dei quali richiede:
• N moltiplicazioni complesse attraverso i fattori di rotazione e
• N addizioni complesse.
Esempio: se n=210=1024, la FFT richiede circa 104 calcoli rispetto a 106 per la DFT
diretta, con un risparmio di fattore 100.
M. Usai
Circuiti digitali 7_4
16
Certamente si nota che il primo stadio della figura 7.13 contiene
coefficienti ±1 e quindi nessuna moltiplicazione effettiva, per cui
l’ordine computazionale è ragionevolmente stimato pari a N lg2N.
Un importante aspetto dell’algoritmo FFT in figura 7.13 è che può
essere calcolato in place in memoria.
Cioè se non si ha bisogno di conservare i dati della matrice di input,
si può aggiornarla con i risultati intermedi
di successivi stadi sino a
~
quando alla fine contiene la DFT X (k ) . Quindi eccetto che per
pochi registri di operazione, non é richiesta alcuna memoria
addizionale. Per dimostrarlo, poniamo che gli outputs degli stadi di
~
X
indice i siano indicati con i ( k ) .
M. Usai
Circuiti digitali 7_4
17
Si noti poi che l’algoritmo FFT in figura 7.13 è costituito da
combinazioni di calcolo esprimibili in forma analitica come:
~
~
m ~
X i (k ) = X i −1 (k ) + W X i −1 (l ),
~
~
~
X i (l ) = X i −1 (k ) + W m + N / 2 X i −1 (l ),
(7.4.4)
x (n) nell’ordine dei bit
Dove gli input iniziali X% 0 (k ) sono gli ~
rovesciati.
Questa coppia di valutazione di base è mostrata in figura 7.14 ed è nota
come calcolo a farfalla (butterfly) FFT.
M. Usai
Circuiti digitali 7_4
18
Figura 7.14 Elaborazione butterfly della decimazione nel tempo.
Dopo aver completato ciascuna farfalla si possono sostituire le coppie di input
~
~
~
~
X i−1 ( k )e X i−1 (l )nella memoria, attraverso la coppia di output X i ( k ) e X i (l ) ,
perché non saranno più necessari quegli input nei calcoli successivi.
Quindi il calcolo può procedere in “place” con il solo aggiornamento dei dati .
M. Usai
Circuiti digitali 7_4
19
Il fattore Wm+N/2 in (7.4.4) indica un ulteriore risparmio di un fattore di 2
computazioni perché W N / 2 = e − N / 2 j ( 2π / N ) = e − jπ = −1 .
Quindi ciascuna farfalla può essere valutata con una sola moltiplicazione
complessa come illustrato in figura 7.15.
Figura 7.15 decimazione nel tempo butterfly con una sola moltiplicazione complessa
M. Usai
Circuiti digitali 7_4
20
Sono possibili alcune variazioni differenti dell’algoritmo FFT
quando:
•
•
•
si vuole l’input o l’output in ordine di bit rovesciati,
in base alla necessità di una valutazione in place e
in base alla complessità della contabilità associata.
Per esempio se si ordinano i nodi della figura 7.13, così che la
matrice di input sia in ordine naturale e si mantiene l'uso delle
farfalle in place, la matrice di output risultante è nell’ordine
di bit rovesciati.
Se si impone che sia agli input che agli output siano in ordine
naturale, allora la valutazione in place viene distrutta e la
contabilità (codice di controllo o circuitry) è più complessa.
M. Usai
Circuiti digitali 7_4
21
Un’altra possibilità è di formare la rete trasposta per un particolare algoritmo di
decimazione nel tempo scambiando la direzione di ciascun ramo nella rete.
Ciò produce una nuova classe degli algoritmi noto come decimazione in frequenza
(decimation-in-frequency).
Per esempio la farfalla della decimazione in frequenza è mostrata in figura 7.16 e la
trasposta della figura 7.13 è data nella figura 7.17
Figura 7.16 Decimazione butterfly con una sola moltiplicazione complessa
M. Usai
Circuiti digitali 7_4
22
Figura 7.17 Diagramma con 8 punti di decimazione in frequenza
M. Usai
Circuiti digitali 7_4
23