Hurtig Fourier-transformation ( FFT , FFT ) er en algoritme til accelereret beregning af den diskrete Fourier-transformation , der giver dig mulighed for at få resultatet på mindre end (kræves for direkte, formel-for-formel-beregning) tid. Nogle gange forstås den hurtige Fourier-transformation som en af algoritmerne, kaldet frekvens-tidsdecimeringsalgoritmen, som har kompleksitet .
Algoritmen er anvendelig på alle kommutative associative ringe med en enhed, oftere anvendt på feltet med komplekse tal (c ) og på restringe (som især er en computerheltalstype ) .
Når man anvender den grundlæggende algoritme, kan den diskrete Fourier-transformation udføres i handlinger til især når handlinger er nødvendige .
Den diskrete Fourier-transformation omdanner et sæt tal til et sæt tal , således at hvor er den primitive rod af enhed , det vil sige for . Det vigtigste trin i algoritmen er at reducere problemet for tal til et problem med et mindre tal. For over feltet af komplekse tal introducerer vi: , , hvor er ethvert tal. Den diskrete Fourier-transformation kan repræsenteres som . (Disse udtryk kan let opnås, hvis den oprindelige sum opdeles i et mindre antal summer med et mindre antal led, og derefter bringes de resulterende summer til samme form ved at forskyde indeksene og deres efterfølgende omdøbning).
På denne måde:
.Under hensyntagen til det og den endelige rekord:
.Yderligere beregnes hver , hvor , her er det stadig påkrævet at udføre handlinger, det vil sige, at operationer udføres på dette stadium .
Yderligere overvejes hvor . Ved udskiftning i den sidste formel forblev udtrykkene i parentes uændrede, og da de allerede blev beregnet i det foregående trin, kræves der kun handlinger for at beregne hver af dem. Samlede tal. Derfor er operationerne på dette trin . Det sidste er sandt med god nøjagtighed for enhver .
Det er logisk at bruge den hurtige Fourier-transformationsalgoritme til , fordi det med et lille antal samples giver en lille hastighedsforstærkning sammenlignet med den direkte beregning af den diskrete Fourier-transformation. Derfor er handlinger nødvendige for helt at flytte til et sæt tal . Derfor gør det ingen forskel, hvilke to tal der skal opdeles i - svaret ændrer sig ikke meget herfra. Antallet af operationer kan kun reduceres ved yderligere partitionering .
Algoritme hastighed :
Det vil sige, at antallet af operationer for enhver opdeling i to tal er , hvor .
Til den inverse Fourier-transformation kan du bruge den direkte Fourier-transformationsalgoritme - du skal bare bruge i stedet (eller anvende den komplekse konjugationsoperation først på inputdataene og derefter på resultatet opnået efter den direkte Fourier-transformation) og dividere endeligt resultat af .
Den generelle sag kan reduceres til den foregående. For laster:
.Betegnelse viser det sig:
,hvis sat kl .
Dermed er problemet reduceret til at beregne foldningen , men dette kan gøres ved hjælp af tre Fourier-transformationer for elementerne: den direkte Fourier-transformation udføres for og , resultaterne ganges element for element, og den inverse Fourier-transformation udføres.
Beregning af alt og kræver handling, tre Fourier-transformationer kræver handling, multiplikation af resultaterne af Fourier-transformationer kræver handling, at beregne alt , når man kender værdierne af foldningen, kræver handling. I alt kræver den diskrete Fourier-transformation handlinger for enhver .
Denne Fast Fourier Transform algoritme kan kun fungere på en ring, når de primitive rødder af enhed er kendt i potenser og .
Den mest almindelige hurtige Fourier-transformationsalgoritme er Cooley-Tukey-algoritmen , hvor den diskrete Fourier-transformation af udtrykkes som summen af diskrete Fourier-transformationer af lavere dimensioner og rekursivt for at opnå kompleksitet . Det elementære artikulationstrin for de mindre Fourier-transformationer i denne algoritme kaldes " sommerfuglen ". Inden for databehandling er den mest almindeligt anvendte rekursive halvering af transformationer base 2 (selvom enhver base kan bruges), og antallet af input samples er en potens af to. I tilfælde, hvor den diskrete transformation beregnes ud fra antallet af prøver, der er primtal, kan Bluestein- og Rader-algoritmerne bruges.
For eksempel for at beregne den hurtige Fourier-transformation ved hjælp af Cooley-Tukey-algoritmen med base 2 for en vektor bestående af elementer:
,med elementer af formularen:
diskret transformation kan udtrykkes som summen af to dele: summen af lige indekser og summen af ulige indekser :
.Koefficienterne og kan omskrives som følger:
Som resultat:
Beregningen af dette udtryk kan forenkles ved at bruge:
Som et resultat af forenklinger, der angiver den diskrete Fourier-transformation af lige indekser med og transformationen af ulige indekser med , for opnås:
Denne post er basis for Cooley-Tukey-algoritmen med base 2 til beregning af den hurtige Fourier-transformation, det vil sige, at den diskrete transformation fra en vektor bestående af samples reduceres til en lineær sammensætning af to diskrete Fourier-transformationer fra samples, og hvis oprindelige opgave krævede operationer, derefter for den resulterende sammensætning - (på grund af genbrug af mellemresultater af beregninger og ). Hvis er en potens af to, så kan denne division fortsættes rekursivt, indtil den når en topunkts Fourier-transformation, som beregnes ved hjælp af følgende formler:
Når man rekursivt dividerer den diskrete Fourier-transformation fra inputværdierne med summen af 2 diskrete transformationer fra inputværdierne, bliver kompleksiteten af algoritmen lig med .