Transformada ràpida de Fourier: diferència entre les revisions

Contingut suprimit Contingut afegit
m r2.7.1) (Robot afegeix: vi:Biến đổi Fourier nhanh
Petites correccions
Línia 1:
La '''transformada ràpida de Fourier''' (o '''FFT''', de l'[[anglès]] '''Fast Fourier transform'''), no és més que una forma molt ràpida i eficient de calcular la [[transformada discreta de Fourier]] (DFT) d'un [[senyal discret]] i la seva inversa, la [[IDFT|transformada inversa discreta de Fourier]] (IDFT).
 
Es calcula de forma computacional a través d'un determinat [[algorisme]]. En termes d'eficiència, la DFT té un cost temporal de O(n2) i la FFT de O(nlog n). En transformades de poques mostres gairebé no s'aprecia la diferència. On sí que es pot apreciar és, per exemple, en una transformada de 1024 mostres. Fent la DFT es necessitarien aproximadament <math>10^6</math> operacions i fent la FFT, en canvi, unes 5000.
Per poder aplicar la transformada ràpida de Fourier, és necessiten dues condicions indispensables: que la senyal discreta a transformar sigui periòdica i que el nombre de mostres sigui de l'ordre de <math>2^n</math>, amb n essent un nombre enter positiu. Com més gran sigui n, millor serà la transformada. Generalment, n sol ser igual a10a 10.
 
D'aquí ve la seva importància pel desenvolupament de les [[telecomunicacions]]. Operacions que abans de la FFT podien desestimar-se per la seva complexitat, van començar-se a fer utilitzant aquesta nova transformada ràpida de Fourier.
Línia 17:
j = 0,\dots,n-1. </math>
 
L'evaluacióavaluació directa d'aquesta fórmula requereix O(''n''²) operacions aritmètiques. Mitjançant un algoritme FFT es pot obtenir el mateix resultat amb tan sols O(''n'' log ''n'') operacions. En general, aquests algoritmes depenen de la factorització de ''n'' però, al contrari del que freqüèntmentfreqüentment es creu, existeixen FFTs per a qualsevol ''n'', inclús amb ''n'' primer.
 
La idea que permet aquesta optimització és la descomposició de de la transformada en altres de més simples que es tornen a descomposardescompondre, i així fins arribar a transformades de 2 elements on ''k'' pot prendre valors 0 i 1. Un cop resoltes les transformades més simples, s'han d'agrupar en altres de nivell superior que s'han de resoldre de nou i així successivament fins a arribar al nivell més alt. Al final d'aquest procés, els resultats obtinguts han de reordenar-se.
 
Ja que la transformada discreta de Fourier inversa és anàloga a la transformada discreta de Fourier, amb diferent signe a l'exponent i un factor 1/''n'', qualsevol algorisme FFT pot ser fàcilment adaptat per al càlcul de la transformada inversa.
Línia 28:
Existeixen diferents algorismes per calcular la FFT, però el més conegut i utilitzat és el de [[Cooley-Tukey]]. Aquest va ser popularitzat l'any 1965 gràcies a una publicació de J. W. Cooley i J. W. Tukey. Aquest algorisme té diferents formes. A continuació s'explica, breument, la més senzilla d'elles: la [[DIT]] (Decimation-in-time). És també la més explicada als llibres de text, però, paradoxalment, la menys usada en grans aplicacions.
 
La base d'aquest algorisme és fer subdivisions de la DFT. Es treballa en diferents etapes i a cada etapa es va dividint en grups de 2. Es poden fer un número màxim de N\2-1 etapes(per un costat els coeficients parells i per l'altre el imparells). Cada un dels coeficients de sortida de la FFT,de les mostres imparells es multipliquen per <math>W_N^K=e^{-i\frac{2\pi }{N}k}</math>, on ''k'' es la posició del vector de sortida, i es sumen a les mostres parells. També, les FFT de N/2 és pot resoldre de la següent manera. realitzant aquesta operació de manera recursiva fins a obtenir una FFT de grandariagrandària 2. El seu resultat és:
:<math>X[0]=x[0]+x[1]</math>
:<math>X[1]=x[0]-x[1]</math>.
Línia 37:
 
* >> X = fft(x)
Fa la FFT del vector x. 'X' és un vector de nombres complexes ordenats des de k=0...N-1. Es recomana que la longitud del vector 'x' sigui una potència de 2. El que no es recomana és que la longitud 'x' sigui un nombre primer. Una altre opció de la FFT és especificar el nombre de punts amb el quualqual es vol fer la FFT.
 
* >> X = fft(x,N)
Línia 46:
 
*>> X = fftshift(X)
Reordena el vector X en ordre creixent de freqüència. Si “X” és el vector resultant de fer una FFT, utilizantutilitzant aquesta funció reordenem els punts en funció de la freqüència.