Sei sulla pagina 1di 7

DEV DEVeloping Software Solutions n.

120 giugno 2004

Trasformata di Fourier
di Cesare Bianchi
` ` Una formula vecchia di due secoli e alla base di uno degli algoritmi piu usati nel processamento di segnali digitali

Cesare Bianchi Si sta laureando in Psicologia e lavora come programmatore ed insegnante. Si occupa di multimedia, intelligenza articiale e di varie altre cose riguardanti linformatica.

pubblicato su WWW.INFOMEDIA.IT stampa digitale da Lulu Enterprises Inc. stores.lulu.com/infomedia


Infomedia
` Infomedia e limpresa editoriale che da quasi venti anni ha raccolto la voce dei programmatori, dei sistemisti, dei professionisti, degli studenti, dei ricercatori e dei professori dinformatica italiani. Sono pi` di 800 gli autori che hanno realizzato per le teu state Computer Programming, Dev, Login, Visual Basic Journal e Java Journal, molte migliaia di articoli tecnici, presentazioni di prodotti, tecnologie, protocolli, strumenti di lavoro, tecniche di sviluppo e semplici trucchi e stratagemmi. Oltre 6 milioni di copie distribuite, trentamila pagine stampate, fanno di questa impresa la pi` grande ed u inuente realt` delleditoria specializzata nel campo della a programmazione e della sistemistica. In tutti questi anni le riviste Infomedia hanno vissuto della passione di quanti vedono nella programmazione non solo la propria professione ma unattivit` vitale e un vero a divertimento. ` Nel 2009, Infomedia e cambiata radicalmente adottando ` un nuovo modello aziendale ed editoriale e si e organizzata attorno ad una idea di Impresa Sociale di Comunit` , a partecipata da programmatori e sistemisti, separando le attivit` di gestione dellinformazione gestite da un board a comunitario professionale e quelle di produzione gesti` te da una impresa strumentale. Questo assetto e in linea con le migliori esperienze internazionali e rende Infomedia ancora di pi` parte della Comunit` nazionale degli u a sviluppatori di software. ` Infomedia e media-partner di manifestazioni ed eventi in ambito informatico, collabora con molti dei pi` imporu tanti editori informatici italiani come partner editoriale e fornitore di servizi di localizzazione in italiano di testi in lingua inglese.

Limpaginazione automatica di questa rivista e realizzata al ` 100% con strumenti Open Source usando OpenOffice, Emacs, BHL, LaTeX, Gimp, Inkscape e i linguaggi Lisp, Python e BASH

For copyright information about the contents of DEV, please see the section Copyright at the end of each article if exists, otherwise ask authors. Infomedia contents is 2004 Infomedia and released as Creative Commons 2.5 BY-NC-ND. Turing Club content is 2004 Turing Club released as Creative Commons 2.5 BY-ND. Le informazioni di copyright sul contenuto di DEV sono riportate nella sezione Copyright alla ne di ciascun articolo o vanno richieste direttamente agli autori. Il contenuto Infomedia e 2004 Infomedia e rilasciato ` con Licenza Creative Commons 2.5 BY-NC-ND. Il contenuto Turing Club e 2004 Turing Club e rilasciato ` con Licenza Creative Commons 2.5 BY-ND. Si applicano tutte le norme di tutela dei marchi e dei segni distintivi. ` E in ogni caso ammessa la riproduzione parziale o totale dei testi e delle immagini per scopo didattico purch e vengano integralmente citati gli autori e la completa identicazione della testata. Manoscritti e foto originali, anche se non pubblicati, non si restituiscono. Contenuto pubblicitario inferiore al 45%. La biograa dellautore riportata nellarticolo e sul sito www.infomedia.it e di norma quella disponibi` le nella stampa dellarticolo o aggiornata a cura dellautore stesso. Per aggiornarla scrivere a info@infomedia.it o farlo in autonomia allindirizzo http://mags.programmers.net/moduli/biograa

programmazione Multimedia
di

Cesare Bianchi > cbianchi@infomedia.it

Trasformata di Fourier
Una formula vecchia di due secoli alla base di uno degli algoritmi pi usati nel processamento di segnali digitali
dove f0 la frequenza propria di x(t), k la fase di ogni cosinusoide che compone la funzione e Ak lampiezza di tale cosinusoide. Tale serie pu essere generalizzata per funzioni non periodiche tramite la trasformata di Fourier:

J
1)

ean Baptiste Joseph Fourier (Figura 1), lautore della famosa trasformata, nacque nel 1768 ad Auxerre in Francia. La sua vita non fu esattamente quella che ci si potrebbe immaginare per un ricercatore di fisica e matematica, ma daltronde il luogo e i tempi non potevano che coinvolgere il giovane Fourier, gi studioso di matematica, nella rivoluzione, e successivamente spingerlo a seguire Napoleone nella campagna dEgitto come consigliere scientifico. Tornato in Francia fu insignito del titolo di Prefetto di Isre, e fu l che tra il 1804 e il 1807 concep la sua pi grande scoperta e la sua pi grande invenzione. La FIGURA 1 prima la famosa teoria sulla propagazione del calore, la seconda, necessaria per dimostrare la prima, luso delle serie trigonometriche per la trasformazione delle funzioni.

2)

x(t) =

A(f )ei2

ft

df

e quindi

3)

A(f ) =

x(t)ei2

ft

dt

Serie e Trasformata di Fourier


La rivoluzione introdotta nel calcolo da Fourier si basa sullassunzione che qualsiasi funzione periodica x(t) sia scomponibile in una somma infinita di coseni, ovvero:

x(t) = A0 +
k=1

Ak cos(2 kf0t +

k)

che permette di trovare la funzione che descrive le ampiezze delle frequenze, ovvero, in termini matematici, passare dal dominio del tempo al dominio delle frequenze. Prima che qualche lettore si spaventi il caso di fare un veloce ripasso di trigonometria. Jean Baptiste Joseph Fourier Come tutti ricorderanno dai tempi della scuola, seno e coseno sono funzioni periodiche di periodo 2 , ovvero si ripetono ogni 360. Se vogliamo un periodo pi corto (frequenza maggiore) o pi lungo (frequenza minore) basta moltiplicare il 2 per la frequenza desiderata. Se linizio di unonda sinusoidale spostato rispetto allo 0, tale spostamento si chiama fase. Per capirci, immaginiamo un oggetto appeso ad una molla: se lo lasciamo cadere dandogli una spinta la sua posizione osciller arrivando anche pi in alto di dove labbiamo lasciato. Tale differenza esattamente la fase di tale oscillazione. Inoltre, poich sia seno che coseno hanno come massimo 1 e come minimo 1, se vogliamo che loscillazione sia pi ampia dovremo moltiplicarli per qualche fattore. Sforzando un po la memoria possiamo anche ritrovare le famose formule di prostaferesi, ovvero: a) e b) sin( + ) = sin( )cos( ) + cos( )sin( ) cos( + ) = cos( )cos( ) sin( )sin( )

Facendo qualche calcolo potremmo renderci conto che c) Acos( t+ ) = acos( t) bsin( t); a = Acos( ); b =Asin( ) ovvero qualsiasi oscillazione, anche con fase, pu essere espressa come somma di un seno e un coseno. Per quanto riguarda la notazione esponenziale, basta ricordare che d) eit = cos(t) + isin(t)

FIGURA 2

Rappresentazione nello spazio complesso del vettore risultante dalle sommatorie di seni e coseni

dove i lunit immaginaria (ovvero la radice quadrata di 1).


55 <<

DEV > n. 119 giugno 2004

programmazione Multimedia
Trasformata di Fourier

Discrete Fourier Transform


Chi era gi pronto ad obiettare che quanto finora detto vale solo per funzioni continue e che perci nellambito informatico non di grande utilit sar stato di certo fermato dal titolo di questo paragrafo. Fatte le dovute modifiche, infatti, la trasformata di Fourier si adatta perfettamente al processamento digitale dei segnali, e anzi soprattutto nellambito discreto che di maggiore utilit. Anche qui tuttavia occorre rinfrescare qualche concetto. Come tutti sapranno, il suono una vibrazione che si propaga attraverso la materia. Se la intercettiamo con un microfono, verr trasformata in un segnale elettrico, che sar possibile registrare in due modi differenti. Quello analogico prevede la trasposizione di tale segnale continuo su un supporto continuo (ad esempio un nastro magnetico), e lintensit del campo magnetico inciso sar proporzionale alla potenza del segnale in ingresso. Nulla viene trasformato in numeri. La registrazione digitale invece avviene attraverso un processo chiamato campionamento: ad ogni intervallo di tempo (nellordine di millesimi di secondo) viene misurata la potenza del segnale e convertita in un numero. Tale segnale sar perci discreto sia nel tempo che nellampiezza. La quantit di campioni presi per unit di tempo viene chiamata frequenza di campionamento, e ovviamente allaumentare di tale frequenza aumenta anche la qualit del suono che sar possibile ricostruire. Perci per descrivere il segnale invece di una funzione continua x(t) useremo un vettore x[t], che ci dir ad ogni istante t (che sar sempre un numero intero, da 0 a N1, dove N il numero totale dei campioni) il valore del segnale. La trasformata di Fourier ancora valida, ma in una forma leggermente modificata, visto che abbiamo un numero discreto di campioni:
N1 N1

4) A(f ) =
t=0

x[t]e

i2 ft

=
t=0

x[t]cos(2 ft) ix[t]sin(2 ft)

FIGURA 3

Rappresentazione grafica dei vettori delle varie frequenze da cercare nel segnale

Se aggiungiamo che lintegrale di una funzione ( e) f (x)dx ) la somma dei valori di tale funzione per ogni possibile valore di x (non me ne vogliano i matematici per la genericit di tali affermazioni), capiamo finalmente cosa dice la trasformata di Fourier. A(f) perci una funzione che descrive lo spettro delle varie frequenze che compongono la funzione x(t). Per capirci, la funzione che indica laltezza delle varie colonnine di Winamp. Se la musica che stiamo ascoltando ha un bel riff di basso, vedremo le colonnine a sinistra (bassa frequenza) schizzare in alto, mentre se Aretha Franklin saranno le colonnine delle frequenze pi alte a dover salire. La grande potenza della trasformata di Fourier che, per infinite frequenze (ed estensione infinita della funzione da studiare) possibile non solo scomporre una funzione, ma anche ricomporla senza perdita di informazione. Giusto per completezza giusto aggiungere che A(f) ha codominio complesso, ovvero per ogni frequenza viene data lampiezza sia nel campo dei numeri reali che immaginari, e che lo stesso pu valere per x(t). Vedremo in seguito cosa questo significhi e che utilit abbia.
>> 56

Cerchiamo a questo punto di capire meglio in termini pratici cosa questo voglia dire, e cosa indichino la componente reale e immaginaria dellampiezza di una data frequenza. Poniamo di voler sapere quanto di una data frequenza (ad esempio il La con cui si accorda la chitarra: 440Hz) presente in un suono. Se abbiamo un diapason baster esporlo al suono e inizier a vibrare in risonanza. Tanto pi vibrer, tanto pi in quel suono rappresentata quella frequenza. Ci di cui non ci possiamo accorgere che il diapason vibrer in fase con quella frequenza. Ovvero la sua funzione sar p(t) =A cos(2 ft+ ). Poniamo invece ora il caso di un diapason speciale che non pu cambiare la sua fase. il caso dei nostri cos(2 ft) e sin(2 ft). Possono entrare in risonanza, ma solo nella fase che loro compete. La fortuna che tra loro sono sfasati di 90, e perci, presi insieme, possono comunque acquisire tutta linformazione relativa al segnale. Non un caso, tra laltro, che vengano rappresentati come le due dimensioni di uno spazio complesso. Come illustrato nella Figura 2, le due somme di seni e coseni sono rappresentabili esse stesse come seno e coseno, e il vettore risultante indica lampiezza (lunghezza) e la fase (angolo) della frequenza cercata. Giusto per completezza il caso di far notare che tale funzione non normalizzata, ovvero allaumentare di N aumenta anche il numero di contributi alla frequenza che vengono sommati, e quindi il totale complessivo. Per normalizzarla baster comunque dividere il risultato per N, cos da poter
DEV > n. 119 giugno 2004

programmazione Multimedia
Trasformata di Fourier

frammento di suono, N somme per ogni frequenza, ogni somma composta da 2 prodotti, in ognuno dei quali c una funzione trigonometrica. Perci il numero di calcoli richiesti proporzionale al quadrato di N. Per ovviare a questo problema stata inventata nel 1965 da James W. Cooley e John W. Tukey la Fast Fourier Transform, un algoritmo che sfrutta alcune propriet dei vettori usati nel calcolo per ridurre drasticamente il numero di computazioni necessarie. Se definiamo 6) WN = ei2
/N

possiamo infatti riscrivere la (5) come

FIGURA 4

Rappresentazione grafica di una trasformata di Fourier a 2 valori: schema a farfalla

7)

Kf [t] = ei2

ft/N

= WNtf

e quindi anche la (4) come rendere confrontabili i risultati trovati per porzioni di suono pi o meno lunghe. Ora che ci siamo un po chiariti le idee e che sappiamo come scoprire quanto una data frequenza rappresentata in un suono, cerchiamo di capire come sfruttare questa conoscenza. Abbiamo detto che con la trasformata di Fourier possibile non solo scomporre, ma anche ricomporre una funzione senza perdita di informazione. Lo stesso, posti certi vincoli, vero per la trasformata discreta. Se infatti prendiamo una porzione di suono composta da N campioni, possibile dimostrare che calcolando tutte le frequenze f/N con f intero, 0 < f < N-1 abbiamo ricostruito, nello spazio delle frequenze (quello delle colonnine di Winamp, per capirci), la stessa informazione contenuta nei campioni di suono originali. Nella Figura 3 sono rappresentate le varie frequenze che andremo a cercare in un ipotetico segnale di soli 8 campioni (a sinistra la componente reale, ovvero il coseno, a destra quella immaginaria, cio il seno). Notare che bench londa sia teoricamente continua, in realt noi andremo a campionare lo stato delloscillazione dellipotetico diapason agli stessi istanti in cui abbiamo campionato il suono originale. In questo modo otterremo 8 vettori, che moltiplicheremo con il vettore del suono, trovando cos il contributo che ogni campione di suono d alle varie frequenze cercate. Poich gli 8 vettori, descritti dalla formula 5) Kf [t] = ei2
ft/N

N1

N1

8)

A[f ] =
t=0

x[t]ei2

ft/N

=
t=0

x[t]WNtf

Fin qui ci siamo limitati a riscrivere qualche formula, ma il divertimento deve ancora arrivare. Ora infatti consideriamo cosa accade a calcolare separatamente le somme dei campioni pari (t=0,2,4,...) e dispari (t=1,3,5,...).
N/21 N/21

A[f ] =
r=0 N/21

x[2r]WN

f(2r)

+
r=0

x[2r+1]WNf(2r+1) = x[2r+1]WNf(2r)WNf =

N/21

= 9)

x[2r]WNf(2r) +
r=0

r=0 N/21

N/21

=
r=0 N/21

x[2r]WNf(2r) + WNf

x[2r+1]WNf(2r)=
r=0 N/21

=
r=0

x[2r]WN/2fr + WNf
r=0

x[2r+1]WN/2fr

con 0 < f,t < N1

(nel nostro caso N = 8) sono tra loro ortogonali (il prodotto scalare tra due qualsiasi vettori d sempre 0), e formano perci una perfetta base ortonormale in N dimensioni su cui abbiamo proiettato gli N valori del nostro segnale, se applichiamo la trasformata inversa otterremo nuovamente il segnale originale. Lutilit di questo algoritmo rappresentata dalla possibilit non solo di analizzare lo spettro delle frequenze che compongono un dato suono, ma anche di costruire facilmente dei filtri che eliminano alcune frequenze (ad esempio al di sopra o al di sotto di un certo livello), per poi ricostruire il segnale dalle frequenze rimanenti.

Fast Fourier Transform


Uno dei grandi limiti della Discrete Fourier Transform nella potenza di calcolo richiesta per computarla. Sono infatti necessarie, per trovare le N frequenze contenute in un
DEV > n. 119 giugno 2004

FIGURA 5

Rappresentazione grafica di una trasformata di Fourier a 4 valori

57 <<

programmazione Multimedia
Trasformata di Fourier

necessita di N moltiplicazioni, N/2 inversioni di segno e 2N addizioni, e che il numero di stadi log2N, il numero di calcoli necessari proporzionale a Nlog(N) (per N grande c unenorme differenza rispetto allN2 della DFT). Inoltre i calcoli possono essere fatti usando un unico buffer di N numeri complessi: il trucco sta nellinizializzare questo buffer con campioni appropriatamente ordinati (per N = 4 lordine sar x[0], x[2], x[1], x[3]). In generale, baster dividere i campioni in due gruppi, pari e dispari, e applicare questa divisione in modo ricorsivo. Giusto per divertimento vi faccio notare che se scriviamo in codice binario i numeri di una sequenza cos ordinata scopriremo che sono in ordine inverso di bit: ad esempio una sequenza di otto numeri sar 000, 100, 010, 110, 001, 101, 011, 111.

La Trasformata di Fourier permette di trovare la funzione che descrive le ampiezze delle frequenze
FIGURA 6
Forma standard delle farfalle e semplificazione

Ricapitolando, ecco come implementare un algoritmo FFT (per la precisione, questo lalgoritmo FFT a decimazione nel tempo, unaltra classe di FFT usa invece la decimazione nella frequenza): 1) Prendiamo un numero N di campioni potenza di 2 2) Li inseriamo in un buffer di numeri complessi di grandezza N (lasciando le parti immaginarie a zero) 3) Ordiniamo il buffer in ordine inverso di bit 4) Calcoliamo il primo stadio di farfalle usando paia di numeri adiacenti nel buffer 5) Calcoliamo il secondo stadio di farfalle stavolta usando paia di numeri che sono separati di 2 6) Calcoliamo il terzo stadio su paia di numeri separati di 4 7) Continuiamo a calcolare fino a quando non abbiamo una separazione di N/2 8) Il buffer contiene la nostra trasformata di Fourier. Nel Listato 1 c un esempio di questo algoritmo implementato in Visual Basic. La variabile STEP la larghezza

dove abbiamo usato una identit fondamentale: 10) WNf(2r) = e(i2


)(2fr/N)

=e

i2 fr N/2

W N/2fr

A questo punto possiamo notare una propriet interessante: le due sommatorie non sono nientaltro che due trasformate di Fourier, calcolate luna sui numeri pari, laltra su quelli dispari. Per N potenza di 2 possiamo applicare ricorsivamente questo metodo fino ad arrivare a trasformate di due soli valori. Proviamo invece ora a partire dalla trasformata di due valori e risalire: A[0] = x[0]W20 + x[1]W20 = x[0] + x[1]W20 11) A[1] = x[0]W20 + x[1]W21 = x[0] + x[1]W21 Possiamo rappresentare graficamente queste due equazioni con la famosa farfalla di Figura 4. Volendo continuare, una trasformata di quattro valori pu essere ridotta a due trasformate di due valori, una per i valori pari, una per quelli dispari. Gli elementi dispari, come ricordiamo, andranno per poi moltiplicati per W4f . Graficamente questo pu essere rappresentato come due livelli di farfalle (Figura 5). Tra laltro, utilizzando lidentit WN/2n = WN2n possiamo esprimere tutti i moltiplicatori come potenze dello stesso WN (nellultimo caso N = 4). Andando avanti diventa ovvio che tutte le farfalle hanno forma simile (vedi Figura 6). Utilizzando lidentit WNs+N/2 = = WNsWNN/2 = -WNs (vera in quanto WNN/2 = e-2 i(N/2)/N = e- i = = cos( ) + i sin( ) = 1 ) possiamo semplificare ulteriormente il grafico (Figura 7). Ed eccoci finalmente al cuore della FFT. Il trucco principale che non occorre calcolare ogni componente della trasformata separatamente: far ci significherebbe ripetere inutilmente un gran numero di calcoli. Invece dividiamo i nostri calcoli in stadi. Ad ogni stadio abbiamo N numeri che appaiamo tramite il sistema della farfalla per ottenere un nuovo insieme di N numeri (complessi), i quali diventano a loro volta linput dello stadio successivo. Poich ogni stadio
>> 58

FIGURA 7

Trasformata di Fourier dopo la semplificazione: FFT a 4 valori

DEV > n. 119 giugno 2004

programmazione Multimedia
Trasformata di Fourier

LISTATO 1
Implementazione in Visual Basic della FFT
Option Explicit Public Public Public Public Public Const Const Const Const Const PI# = 3.14159265358979 PI2# = 2# * PI Log2# = 0.693147180559945 Log10# = 2.30258509299405 Sqr2# = 1.4142135623731 4# * Atn(1#) Log(2#) Log(10#) Sqr(2#) Calcolo la trasformata For L = 1 To M INCREM = 2 ^ L STEP = INCREM / 2 Ur = 1# Ui = 0# Wr = Cos(PI / STEP) Wi = Sin(PI / STEP) For J = 0 To STEP - 1 For I = J To NVAL - 1 Step INCREM IP = I + STEP Tr = R(IP) * Ur - X(IP) * Ui Ti = R(IP) * Ui + X(IP) * Ur R(IP) = R(I) - Tr X(IP) = X(I) - Ti R(I) = R(I) + Tr X(I) = X(I) + Ti Next I Tr = Ur Ti = Ui Ur = Tr * Wr - Ti * Wi Ui = Tr * Wi + Ti * Wr Next J Next L

Sub FFT(D() As Double, R() As Double, X() As Double _ , S() As Double, F() As Double, ByRef NVAL As Long, ByRef NFRE As Long) Entra con: D() = Vettore dei dati Reali del Segnale(t). NVAL = Numero max. dei dati in D() da usare. Esce con: R() = X() = S() = F() = dei valori Reali della Trasformata(f). dei valori Immaginari della Trasformata(f). dello Spettro di Amp. della Trasformata(f). delle Fasi della Trasformata(f) [Radianti]. NVAL = Numero dei dati usati dalla Trasformata(f). NFRE = Numero dei valori di Frequenza calcolati. Vettore Vettore Vettore Vettore

I valori della Trasformata in R(), X() NON vengono normalizzati sulla lunghezza del Segnale 2^M. I vettori R(), X(), S() e F() sono dimensionati in questa routine. Gli NN dati nei vettori sono organizzati come Vettore(0 To NN - 1). Dim M, I, NMN1, J, K, L, INCREM, STEP, IP, JF As Long Dim Ur, Ui, Wr, Wi, Tr, Ti As Double M = Int(Log(CDbl(NVAL) + 0.5) / Log2) NVAL = 2 ^ M NFRE = NVAL / 2 NMN1 = NVAL - 1 ReDim R(0 To NVAL - 1), X(0 To NVAL - 1) ReDim S(0 To NFRE), F(0 To NFRE) For I = 0 To NVAL - 1 R(I) = D(I) Next I

Calcolo dello Spettro di Ampiezza e delle Fasi S(0) = Abs(R(0)) / CDbl(NVAL) F(0) = IIf(R(0) < 0#, PI, 0#) For JF = 1 To NFRE - 1 S(JF) = Sqr(R(JF) * R(JF) + X(JF) * X(JF)) / CDbl(NFRE) F(JF) = Atn4Q(-X(JF), R(JF)) Next JF S(NFRE) = Abs(R(NFRE)) / CDbl(NVAL) F(NFRE) = IIf(R(NFRE) < 0#, PI, 0#) End Sub Public Function Atn4Q(ByVal Y#, ByVal X#) As Double Ritorna il Valore dell ArcoTangente di y/x su 4 Quadranti. E: -PI < Atn4Q <= PI. Select Case X Case Is > 0# Atn4Q = Atn(Y / X) Case Is < 0# If Y >= 0# Then Atn4Q = Atn(Y / X) + PI ElseIf Y < 0# Then Atn4Q = Atn(Y / X) - PI End If Case Is = 0# Atn4Q = Sgn(Y) * PI / 2# End Select End Function Public Sub Swap(vN1 As Variant, vN2 As Variant) Dim vTn As Variant vTn = vN1 vN1 = vN2 vN2 = vTn End Sub

Riordino il buffer in ordine inverso di bit J = 0 For I = 0 To NMN1 - 1 If (I < J) Then Swap R(J), R(I) End If K = NFRE Do While (K - 1 < J) J = J - K K = K / 2 Loop J = J + K Next I

della farfalla, ovvero la distanza tra i due ingressi. Inizia con 1 e raddoppia ad ogni stadio. Ad ogni stadio perci dobbiamo calcolare STEP insiemi di farfalle, formati da farfalle separate tra loro di una distanza pari ad INCREM (che il doppio di STEP). Il calcolo organizzato in vari insiemi poich ogni insieme condivide lo stesso moltiplicatore U (diviso nella sue parte reale Ur e immaginaria Ui). Alla fine dellalgoritmo vengono inoltre calcolate le ampiezze e le fasi dello spettro trovato, che non sono nientaltro che il modulo del vettore complesso (ricordate la Figura 2?) e langolo della sua pendenza rispetto allasse reale. Insomma, stata dura ma abbiamo finalmente capito come funziona uno degli algoritmi pi utilizzati nel processamento di segnali audio (e non solo). Nelle prossime puntate, molto meno matematiche, scopriremo invece alcune semplici applicazioni di questo algoritmo.
DEV > n. 119 giugno 2004

Bibliografia
Su Joseph Fourier: http://www-history.mcs.st-andrews.ac. uk/Mathematicians /Fourier.html Sulla FFT: James W. Cooley and John W. Tukey, An algorithm for the machine calculation of complex Fourier series, Math. Comput. 19, 297301 (1965). http://en.wikipedia. org/wiki/Fast_Fourier_transform

Cesare Bianchi
Si sta laureando in Psicologia e lavora come programmatore ed insegnante. Si occupa di multimedia, intelligenza artificiale e di varie altre cose riguardanti linformatica.
59 <<