You are on page 1of 8

Bluesteins FFT algorithm

Tommaso Caldognetto 580552 8 febbraio 2009


Sommario Il saggio illustra lalgoritmo FFT di Bluestein come implementazione dellalgoritmo di calcolo di una particolare trasformata frazionaria di Fourier che permette lanalisi ad alta risoluzione dello spettro di una sequenza ad N -valori (la FRFT di Bailey e Swarztrauber). A tal ne si descrive lalgoritmo di Bluestein nella sua versione pi` generale illustrandone le varie fasi e quindi se ne propone unanalisi. u Inne viene denita la FRFT e si presenta il codice MatLab che la realizza attraverso lalgoritmo di Bluestein.

Introduzione

tecnica calcolo della trasformata discreta di Fourier che Lalgoritmo di Bluestein `e unadiscreta.diCos` dominio del tempo sfruttare un preesistente si basa sullesprimere la relazione tra dati nel e dati nel dominio della frequenza attraverso una convoluzione facendo, ` possibile e

modo di calcolo veloce della DFT, e quindi, applicando le propriet` della convoluzione, ottenere a lespressione nel dominio della frequenza della sequenza di dati inizialmente espressi nel dominio del tempo. I vantaggi pi` evidenti di questo approccio al calcolo della DFT di una sequenza a N -valori u rispetto agli usuali algoritmi FFT sono determinati dalla complessit` computazionale che, per a una data implementazione e a meno di costanti di proporzionalit`, si mantiene O(N log2 N ), a costante e indipendente dalla lunghezza N , e dalla possibilit` di scegliere arbitrariamente la a distanza tra i campioni in frequenza, poich` non ` vincolata allinverso del numero di campioni e e nel tempo in un periodo. Per quanto riguarda le applicazioni, per citarne alcune, lalgoritmo di Bluestein trova impiego nel calcolo di DFT di sequenze con numero primo di valori; nel calcolo di DFT di sequenze di dati con periodicit` non intera; a

nellanalisi ad alta risoluzione di porzioni limitate dello spettro di una sequenza di dati.

Descrizione dellalgoritmo di Bluestein

Si supponga di voler calcolare la trasformata discreta di Fourier del segnale x(nTc ), n 2 Z, ottenuto per campionamento del segnale s denito sul dominio R/Z(Tp ). Sotto tali ipotesi, x(nTc ) ` denito sul dominio Z(Tc )/Z(Tp ), e pu` essere rappresentato e o dal vettore x = (x0 , . . . , xN 1 ), al quale, applicando direttamente la denizione di trasformata discreta di Fourier, associamo il corrispondente vettore X = (X0 , . . . , XN avente k-esima componente Xk cos` determinata Xk = Tc
N 1 X n=0 1)

xn e

i2 kn N

(1)

FILTRO
xn n {0,1,..., N 1}

wn

ei n

gk

Xk k {0,1,..., M 1}

ei n

ei k

Figura 1: Schema delle tre operazioni fondamentali Si supponga ora che solo le prime M componenti di X, con M N , siano di nostro interesse e si sostituisca, per conferire maggiore generalit`, il rapporto 1/N con (2 R) ; in questo modo, a posto Tc = 1 per semplicit`, la (1) diventa a Xk =
N 1 X n=0

xn e

i2kn

k 2 {0, 1, . . . , M

1} ;

(2)

a questo punto ` lecita la sostituzione suggerita da Bluestein[2] e kn = secondo la quale otteniamo Xk = =


N 1 X n=0 N 1 X n=0

1h 2 n + k2 2

(k

n)

(3)

xn e xn e

i (n2 +k2 (k n)2 )

(4) (5) ; (6)

in2

ik2 i(k n)2

=e

ik2

N 1 X n=0

xn e

in2

ei(k

n)2

questultima pu` inne essere resa pi` compatta, ed evocativa, introducendo le due sequenze o u wn = xn e hn = e
in2

(7) (8)

in2

che ci permettono di riscrivere la (6) nel seguente modo Xk = e


ik2 N 1 X n=0

wn hk

(9)

e quindi di esprimere i coe cienti Xk mediante la convoluzione discreta delle due sequenze wn e hn , con postmoltiplicazione. La Figura 1 sintetizza gracamente i passaggi. Giunti a questo punto, nel cercare un modo e ciente di calcolo della (9), si ricorda il teorema di convoluzione (per la cui dimostrazione si fa riferimento a [6], e a [5] per osservazioni utili ai nostri ni), secondo il quale vale la relazione w h = DFT
1

(DFT (w) DFT (h)) ;

(10)

quindi, supponendo di disporre di un algoritmo FFT, la relazione (10) pu` essere convenienteo mente applicata al nostro caso. Tuttavia non ` possibile procedere direttamente per questa via e perch` la (10) prevede che le due sequenze w e h rappresentino segnali periodici e che siano della e stessa lunghezza (cio` siano segnali periodici con periodo comune). e

Quindi, al ne di ottenere le due sequenze in forma appropriata e di calcolarne la convoluzione ciclica, si scelga un qualunque intero1 L tale che sia maggiore o uguale a M + N 1 e si derivino, dalle iniziali, le due nuove sequenze ( wn 0 n N 1 yn = (11) 0 N nL 1 e 8 2 >hn = ein < vn = 0 > : hn L = ei(n 0nM 1 M nL N L N +1nL (12)

. 1

L)2

Cos` facendo le due sequenze (si veda Figura 2) possono essere moltiplicate nel dominio della trasformata in modo da ottenere nel dominio di partenza (dominio della frequenza) gli M valori cercati della DFT di x. In particolare si procede calcolando attraverso lalgoritmo FFT la DFT dei valori yn e dei valori vn , cio` si calcolano le DFT: e yn , n 2 {0, . . . , L vn , n 2 {0, . . . , L 1} 1}
DF T DF T

! Yr , r 2 {0, . . . , L ! Vr , r 2 {0, . . . , L 1} ,

1} , 1} ;

(13) (14)

quindi si moltiplicano i Vr e Yr punto a punto, ottenendo la sequenza Gr = Vr Yr r 2 {0, . . . , L


1

(15)

si calcola la trasformata inversa dei valori Gr , cio` e Gr , r 2 {0, . . . , L 1}


DF T

! gk , k 2 {0, . . . , L

1} ,

(16)

ed inne, considerando solo i primi M valori, si esegue la postmoltiplicazione ottenendo Xk = e


ik2

gk ,

k 2 {0, . . . , M

1} ,

(17)

che `, per = 1/N , la DFT di x; e quindi termina lalgoritmo FFT di Bluestein. e

Analisi della complessit` a

Per una stima delle prestazioni dellalgoritmo di Bluestein in termini di tempo di esecuzione si propone ora unanalisi ammortizzata delle prestazioni asintotiche dei singoli blocchi di operazioni valutate nel loro ordine di esecuzione. Se supponiamo sia O(1) il tempo richiesto per il calcolo di un prodotto e una somma tra numeri complessi, si osserva che 1. il calcolo dei vettori yn e vn richiede L prodotti i quali complessivamente richiedono un tempo O(L); 2. se scegliamo L tale che sia una potenza di due, si ottimizza lesecuzione dellalgoritmo FFT ausiliario, che quindi computa la DFT e la DFT 1 di una sequenza lunga N -valori in un tempo O(N log N ) e il calcolo della (10) viene eseguito in un tempo 3 O(L log L), proporzionale a O(L log L); 3. se si considera il caso pi` sfavorevole allora i campioni Xk da determinare sono in numero N u e lultimo blocco, calcolando N prodotti ognuno di costo O(1), ha complessivamente costo O(N ).
1 In

realt` L si sceglie tale da ottimizzare lalgoritmo FFT, quindi comunemente L ` una potenza di due. a e

(A)

yn

(E)

Vr

N 1
(B)

n
(F)

L 1 r
Gr

Yr

L 1 r
(C)

L 1 r
(G)

hn

gk

n
(D)

M 1
(H)

vn

Xk

M 1

L N 1

L 1 n

M 1

Figura 2: Rappresentazione delle sequenze attraverso le varie fasi: (A) sequenza lunga L ottenuta dallingresso
xn attraverso moltiplicazione per e in e zero-padding; (B) sequenza Yr , DFT della sequenza yn ; (C) rappresentazione del segnale discreto non limitato hn ; (D) sequenza nita derivata da (C) composta in modo opportuno per poi convolverla mediante cyclic convolution; (E) sequenza Vr , DFT della sequenza vn ; (F) sequenza Gr data dal prodotto punto a punto tra Yr e Vr ; (G) sequenza gk lunga M , data da DFT 1 della sequenza Gn troncata allN -simo valore; (H) sequenza Xk lunga M ottenuta demodulando gk .
2

Inoltre si nota che O(L) = O(N ) e O(L log L) = O(N log L) perch` L ` tale che 2N L 4N , e e per come ` stato denito. Perci` si ottiene un tempo totale di esecuzione, somma dei tempi delle e o tre fasi analizzate, uguale a O(N ) + O(N log N ) + O(N ) = O(N log N ) per ogni valore di N . Da questa analisi si pu` aermare che il tempo di esecuzione dellalgoritmo di Bluestein o col crescere di N cresce in modo proporzionale a N log N , il quale, a meno di una costante di proporzionalit`, ` un comportamento analogo a quello che si osserva per un algoritmo FFT a e (infatti lesecuzione dellalgoritmo di Bluestein richiede il calcolo di 2 o 3 FFT).

Esempio di applicazione

Nellambito dellanalisi ad alta risoluzione dello spettro di un segnale la DFT ordinaria lascia il posto ad altri strumenti di studio. Uno di questi ` la particolare trasformata FRFT denita nel e 1991 da Bailey e Swartztrauber [1], che qui si presta bene a mostrare un esempio di applicazione dellalgoritmo di Bluestein. Pi` in dettaglio, data una sequenza di N campioni equispaziati nel dominio del tempo di un u segnale a banda limitata s(t), t 2 R, la FRFT considerata2 , permette di calcolare una sequenza di N campioni equispaziati nel dominio della frequenza e vicini quanto si vuole. Prima di formulare formalmente la FRFT, si preferisce accennare la seguente proposizione 3 sulla quale si basa lapproccio classico per aumentare la risoluzione in frequenza: Se un segnale s denito su R/O ` a banda limitata e tale che i suoi campioni possano e essere considerati nulli al di fuori dellintervallo e = {t | 0 t N T }, allora anche il segnale s, denito su Z(T )/Z(Tp ), ottenuto per campionamento della ripetizione
2 In realt`, come evidenziato in [3], il termine Fractional Fourier Transform ` improprio per la (19) dato che a e in letteratura con tale espressione si indica invece un altro tipo di trasformazione, ben pi` sosticata, a cui si u rimanda sempre a [3] per una visione unicata della FRT. 3 Per riferimenti riguardo la proposizione e caratteristiche della FFT di Cooley-Tukey qui impiegate [4].

periodica di s, ha gli stessi campioni di s nellintervallo e. Inoltre, se SF ` la trasformata e di Fourier di s, questa ` univocamente determinata dallinsieme discreto dei valori e equispaziati Fc = 1/Tp della trasformata di s Da queste considerazioni segue appunto il metodo al quale ci si ` riferiti con approccio classico, e 0 secondo il quale per ottenere i campioni di SF equispaziati Fc < Fc si dovr` considerare la a 0 ripetizione s con periodo Tp > Tp di s, che equivale a calcolare la trasformata discreta della P sequenza formata dai campioni di s pi`, accodati, un numero opportuno di zeri (zero-padding). u Si nota per` che tale modo di procedere appesantisce notevolmente loperazione e inoltre, poich` o e calcola P > N valori della trasformata, non ` e ciente. e

4.1

Denizione della FRFT e implementazione con BFFT

La FRFT pu` essere dedotta dalla trasformata discreta di Fourier del segnale x(nTc ), n 2 o {0, 1, , N 1} nella forma X(kFc ) = Tc
N 1 X n=0

x(nTc ) e

i2 nTc kFc

k 2 {0, 1, . . . , N

1} ,

(18)

0 con Fc = 1/(N Tc ) , scegliendo un Fc < Fc , ottenendo cos` 0 X(kFc ) = Tc N 1 X n=0

x(nTc ) e

0 i2 nTc kFc

k 2 {0, 1, . . . , N

1} ,

(19)

che sono i campioni della trasformata di Fourier del segnale continuo s valutata nei pun0 0 0 0 ti Fc , 2Fc , . . . , (N 1) Fc . A questo punto, ponendo = Tc Fc e M = N , ci si riconduce esattamante alla (2). ` E dunque possibile eseguire il calcolo della (19) in modo e ciente attraverso lalgoritmo di Bluestein mantenendo il numero di operazioni eseguite O(N log N ) indipendentemente dalla 0 risoluzione in frequenza, contro le O(P log P ), con P = 1/(Fp Tc ), dellapproccio classico4 . Di seguito se ne presenta una possibile implementazione MatLab. Possibile implementazione in MatLab dellalgoritmo %%Bluesteins FFT algorithm function [Xk]=BlueFFT(xn,T,a) N=length(xn); L= 2^nextpow2(2*N-1); n=0:N-1;

%numero di campioni del segnale di ingresso %L tale che sia 2^m

h=exp(j*pi*n.*n*a); %risposta impulsiva del filtro wn=xn.*conj(h); %modulazione dellingresso vn=[h,zeros(1,L-2*N+1),h(N:-1:2)]; %definizione della sequenza Vr=fft(vn,L); Yr=fft(wn,L); Gr=Vr.*Yr; gk=T*ifft(Gr); gk=gk(1:N); gk=gk.*conj(h); Xk=gk; %FFT di vn %FFT di yn %sequenza tF della convoluzione

%scarto dei valori non significativi %demodulzione

4 Per esempio: Se volessimo calcolare gli N = 2000 campioni in frequenza spaziati di F 0 = 0.2mHz dei c corrispondenti campioni di una N -sequenza con Tc = 0.01s, il metodo classico richiede il calcolo di una FFT di dimensione P = F 01 che porta ad un numero di operazioni O(P log2 P ), dellordine di 107 , contro le O(N log2 N ) T

operazioni dellalgoritmo di Bluestein, che sono invece dellordine di 104 .

c c

(A) Segnali di ingresso

(B)

DFT di x 1
(C)

zoom con BFFT di x 1

1 x 1=sinc(t)1(t) sinc(t)1(t)e-2if0t 0.4 0.4 0.3 0.3 0.2 0.1 0.1 0 0.5 0.5 0.6

0.8

0.6

0.4 0.2

0.2

-0.2 0 0 20 40 60 frequenza 80 100

-0.4
15 0.15 20 0.2

5 0.05

10 0.1 tempo

-0.1 0.2

0.3

0.4 0.5 frequenza

0.6

0.7

(D) Segnali di ingresso

(E)

DFT di x 2 0.7 0.6 0.5 0.4 0.3 0.2 0.1

(F)

zoom con BFFT di x 2

1 x 2=ircos(t)1(t) ircos(t)1(t)e-2if0t 0.5 0.4 0.3 0.2 0.1 0 0 20 0.6

0.7

6
15 0.15 20 0.2

0.8

0.6

0.4

0.1

0.2

-0.2

-0.4

5 0.05

10 0.1 tempo

40 60 frequenza

80

100

0 0.2

0.3

0.4 0.5 frequenza

0.6

0.7

Figura 3: La gura riporta i graci relativi ai segnali di ingresso sinc e ircos ( = 0.1) causali (rispettivamente serie (A),(B),(C) e (D),(E),(F)) e alle loro trasformate. La

possono essere [s] per il tempo e [Hz] per la frequenza.

gura (A) rappresenta la N -sequenza x1 : in blu nel dominio del tempo, in rosso nel dominio del tempo quando traslata di f0 nel dominio f ; (B) rappresenta la trasformata discreta di Fourier di x1 , nellovale colorato si evidenzia qualitativamente la porzione di trasformata che si vuole analizzare ad alta risoluzione; (C) rappresenta il risultato dato dallalgoritmo di Bluestein attraverso chiamata a BlueFFT( x1 e i20.3T , T = 0.01, = 2 ), che quindi calcola gli N valori della trasformata di x1 spaziati di h i 0 0 Fc = Tc = 0.2m nellintervallo in frequenza [f0 , f0 + N Fc ] = f0 , f0 + N Tc = [0.3, 0.7]. Analogo signicato hanno per x2 le gure (D),(E),(F). Le unit` di misura a

5
5

Nota Storica

Secondo le fonti[8][2], lalgoritmo, come presentato, ` stato soltanto attribuito a Leo Bluestein: e egli in realt` si stava occupando della ricerca di un modo e ciente di calcolo della trasformata a discreta di Fourier studiando il problema dal punto di vista dei ltri lineari. Infatti, i pi` u signicativi risultati della sua ricerca in merito sono stati lespressione della DFT attraverso una convoluzione e la rielaborazione della risposta impulsiva di un chirp lter in modo tale da poterla convenientemente esprimere in termini della sua trasformata z. Thomas G. Stockham, invece, in un suo studio, aveva aermato che tutti i ltri si potevano realizzare attraverso FFT. Fu Charlie Rader che, quando incontr` Lawrance Rabiner e Ron Schafer, i quali stavano o ricercando nel campo del holomorphic signal processing, sugger` una soluzione al problema dei due studiosi ricordando quello che aveva detto L. Bluestein riguardo alla relazione DFTltri e anche tenendo presente laermazione di T. G. Stockham. I tre, poi, grazie allintuizione di C. Rader, svilupparono un algoritmo di calcolo della trasformata z detto chirp-z transform algorithm (CZT) [7] che permise di risolvere il problema di partenza. La CZT non ` altro che un ampliamento dellalgoritmo oggi conosciuto come chirp transform e algorithm (CTA)[6]. Comunemente ci si riferisce allalgoritmo CTA quando il parametro di (2) ` un numero reale, e mentre Bluesteins FFT algorithm ` pi` frequente che si riferisca al caso in cui rappresenti il e u reciproco del numero di campioni, cio` 1/N . e

5 La

nota storica ha il ne di giusticare luso della terminologia.

Riferimenti bibliograci
[1] D. H. Bailey and P. N. Swarztrauber, The Fractional Fourier Transform and Applications, Tech. Rep., October 1991. [Online]. Available: http://crd.lbl.gov/ dhbailey/dhbpapers/fract.pdf [2] L. I. Bluestein, A Linear Filtering Approach to the Computation of the Discrete Fourier Transform, IEEE Trans. Audio Electroacoust., vol. AU-18, no. 4, pp. 451455, October 1968. [3] G. Cariolaro, T. Erseghe, P. Kraniauskas, and N. Laurenti, A Unied Framework for the Fractional Fourier Transform, IEEE Trans. Signal Process., vol. 46, no. 12, pp. 32063219, December 1998. [4] W. T. Cochran, J. W. Cooley, D. L. Favin, H. D. Helms, R. A. Kaenel, W. W. Lang, J. George C. Maling, D. E. Nelson, C. M. Rader, and P. D. Welch, What Is the Fast Fourier Transform, Proceedings of the IEEE, vol. 55, no. 10, pp. 16641674, October 1967. [5] J. W. Cooley, P. A. W. Lewis, and P. D. Welch, The Finite Fourier Transform, IEEE Trans. Audio Electroacoust., vol. AU-17, no. 2, pp. 7785, June 1969. [6] A. V. Oppenheim, R. W. Schafer, and J. R. Buck, Discrete-Time Signal Processing, 2nd ed. New York: Prentice-Hall, Inc., 1998. [7] L. R. Rabiner, R. W. Schafer, and C. M. Rader, The Chirp z-Transform Algorithm, IEEE Trans. Audio Electroacoust., vol. AU-17, no. 2, pp. 8692, June 1969. [8] L. Rabiner, The Chirp z-Transform AlgorithmA Lesson in Serendipity, IEEE Signal Process. Mag., no. 24, pp. 118119, March 2004.

You might also like