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