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

Contingut suprimit Contingut afegit
m Robot inserta {{Autoritat}}
m Millores
Línia 1:
[[Fitxer:FFT Example.jpg|vinheta|329x329px|Fig.1 FFT de la suma de 2 senyal sinusoidals de 300 i 600 Hz]]
{{FR|data=febrer de 2014}}
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). <ref>{{Ref-web|url=https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/|títol=An Interactive Guide To The Fourier Transform – BetterExplained|consulta=2017-03-01|llengua=Anglès|editor=betterexplained.com|data=}}</ref>
{{MF|data=febrer de 2014}}
 
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(n²) 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, es necessiten dues condicions indispensables: que el senyal discret a transformar sigui periòdic 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 a 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.<ref>{{Ref-web|url=http://www.earlevel.com/main/2002/08/31/a-gentle-introduction-to-the-fft/|títol=A gentle introduction to the FFT {{!}} EarLevel Engineering|consulta=2017-03-01|llengua=Anglès|editor=www.earlevel.com|data=}}</ref>
 
La transformada ràpida de Fourier és d'importància fonamental en l'anàlisi matemàtica i ha estat objecte de nombrosos estudis. L'aparició d'un algorisme eficaç per a aquesta operació va ser una pedra angular en la història de la informàtica.<ref>{{Ref-publicació|cognom=|nom=www.askamathematician.com|article=Q: What is a Fourier transform? What is it used for?|publicació=Ask a Mathematician / Ask a Physicist|llengua=Anglès|url=http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/|data=2012-09-25|pàgines=}}</ref>
 
Les principals aplicacions de la transformada ràpida de Fourier són múltiples. És la base de moltes operacions fonamentals que es troben en el [[tractament digital del senyal]], on té una àmplia utilització. També és important en el [[filtratge digital]] i la resolució d'[[equacions diferencials]], entre altres aplicacions. A més, proporciona un mitjà convenient per millorar el rendiment dels algorismes per a un conjunt de problemes aritmètics comuns.
 
== Definició ==
Siguin ''x''<sub>0</sub>, ...., ''x''<sub>''n''-1</sub> [[nombre complex|nombres complexos]]. La transformada discreta de Fourier (DFT) es defineix com <ref>{{Ref-web|url=http://hyperphysics.phy-astr.gsu.edu/hbase/Math/fft.html|títol=Fast Fourier Transforms|consulta=2017-03-01|llengua=Anglès|editor=hyperphysics.phy-astr.gsu.edu|data=}}</ref>
 
:[[Fitxer:DIT-FFT-butterfly.png|vinheta|Fig.2 Càlcul gràfic]]<math> f_j = \sum_{k=0}^{n-1} x_k e^{-{2\pi i \over n} jk }
\qquad
j = 0,\dots,n-1. </math>
Linha 28 ⟶ 26:
:<math>x[n] = IDFT\{X[k]\}=\frac{1}{N}\left(DFT\left\{X^*[k]\right\}\right)^*</math>
 
== AlgorismeAlgorismes de Cooley-Tukeycàlcul de FFT ==
 
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.
=== Algorisme de Cooley-Tukey ===
[[Fitxer:Cooley-tukey-general.png|vinheta|299x299px|Fig.2 Algorisme Cooley–Tukey]]
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. <ref>{{Ref-web|url=http://sip.cua.edu/res/docs/courses/ee515/chapter08/ch8-2.pdf|títol=Cooley–Tukey algorithm|consulta=1/03/2017|llengua=Anglès|editor=sip.cua.edu|data=}}</ref>
 
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 nombre màxim de N\2-1 etapes(per un costat els coeficients parells i per l'altre els imparells). Cada un dels coeficients de sortida de la FFT,de les mostres imparelles es multipliquen per <math>W_N^K=e^{-i\frac{2\pi }{N}k}</math>, on ''k'' és la posició del vector de sortida, i se sumen a les mostres parelles. Les FFT de N/2 es pot resoldre també de la següent manera: realitzant aquesta operació de manera recursiva fins a obtenir una FFT de grandària 2. El resultat és:
Linha 36 ⟶ 37:
 
Per exemple, es disposa d'un senyal de N=8 mostres. Es poden fer fins a 3 etapes. A la primera etapa es té una DFT de N mostres. A la següent etapa 2 DFTs de N/2 mostres cada una. I l'última etapa tindrà 4 DFTs de N/4 mostres cada una. Finalment s'han de combinar totes les etapes. Es fa a través d'una operació anomenada "[[butterfly]]", o ''papallona'' del català. Utilitzant aquest algorisme, també anomenat [[radix-2]] s'observa que el nombre de mostres (N) que es pot agafar ha de ser potència de 2.
 
=== Altres algorismes <ref>{{Ref-web|url=http://www.dspguide.com/ch12/2.htm|títol=How the FFT works|consulta=2017-03-01|llengua=Anglès|editor=www.dspguide.com|data=}}</ref> ===
 
* '''[[FFT del factor primer]]'''''(també anomenat algorisme de Good-Thomas).''
-Semblant al de Cooley-Tukey però amb N essent un nombre primer.
* '''[[FFT de Bruun]]'''
-Basat en l'aproximació per factorització polinomial.
* '''[[FFT de Rader]]'''
-Es basa a expressar la DFT com una convolució cíclica. N ha de ser, també, un nombre primer.
* '''[[FFT de Bluestein]]'''
-Aquest algorisme expressa la DFT com una convolució lineal, on N pot ésser qualsevol nombre. Aquest algorisme pot utilitzar-se per a més transformades que es basin en la [[TZ]] (transformada Z).
 
== FFT amb Matlab ==
 
* >> X = fft(x) <ref>{{Ref-web|url=https://es.mathworks.com/help/matlab/ref/fft.html|títol=Fast Fourier transform - MATLAB fft|consulta=2017-03-01|llengua=Anglès|editor=es.mathworks.com|data=}}</ref>
* >> X = fft(x)
Fa la FFT del vector x. 'X' és un vector de nombres complexos 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 altra opció de la FFT és especificar el nombre de punts amb el qual es vol fer la FFT.
 
Linha 52 ⟶ 64:
 
 
== Altres algorismes ==
 
* '''[[FFT del factor primer]]'''''(també anomenat algorisme de Good-Thomas).''
-Semblant al de Cooley-Tukey però amb N essent un nombre primer.
* '''[[FFT de Bruun]]'''
-Basat en l'aproximació per factorització polinomial.
* '''[[FFT de Rader]]'''
-Es basa a expressar la DFT com una convolució cíclica. N ha de ser, també, un nombre primer.
* '''[[FFT de Bluestein]]'''
-Aquest algorisme expressa la DFT com una convolució lineal, on N pot ésser qualsevol nombre. Aquest algorisme pot utilitzar-se per a més transformades que es basin en la [[TZ]] (transformada Z).
 
 
Linha 81 ⟶ 83:
* [[Sèries de Fourier]]
* [[Transformada discreta de Fourier]]
 
== Referències ==
{{Autoritat}}