Fast Fourier transform

FFT-vlinderberekening

In de numerieke wiskunde is een Fast Fourier transform (snelle fouriertransformatie, afgekort tot FFT) een algoritme voor het efficiënt berekenen van de discrete fouriertransformatie (DFT) van een discreet signaal waarvan de waarden bekend zijn in een eindig aantal equidistante punten.

Fourieranalyse zet een signaal om vanuit het oorspronkelijke domein (meestal tijd of ruimte) naar een voorstelling in het frequentie-domein en vice versa. De discrete fouriertransformatie bekomt men door een reeks waarden te ontbinden in componenten met verschillende frequenties. Deze bewerking is erg belangrijk voor een aantal toepassingen, maar de directe berekening is vaak te langzaam om bruikbaar te zijn. Dit wordt opgelost met de snelle fouriertransformatie.

Terwijl directe berekening een efficiëntie heeft van , is de efficiëntie van een FFT . De daarmee gemoeide tijdwinst is aanzienlijk, zeker voor grote .

Het algoritme is ontwikkeld door James Cooley en John Tukey in 1965, en komt er in zijn oorspronkelijke vorm op neer dat een fouriertransformatie met lengte wordt gesplitst in twee transformaties met lengte , waarbij gebruikgemaakt wordt van de periodiciteit en symmetrie in de sinus en cosinus. Door deze opsplitsing recursief toe te passen ontstaat een verbetering van de orde . Voor bijvoorbeeld is dat al een factor 630.

Voor de toepassing van een dergelijke recursie is vereist dat een macht van 2 is. Later is deze methode gegeneraliseerd naar een ontbinding in willekeurige priemfactoren, waardoor een meer algemene toepasbaarheid ontstond. Gebruik van grote priemfactoren kan echter zeer nadelige gevolgen hebben voor de rekentijd. Voor praktische toepassing zoals in signaalanalyse heeft de beperking tot machten van twee nauwelijks gevolgen. Wanneer een 3-dimensionale FFT wordt gebruikt, zoals in de kristallografie, kan het echter leiden tot bijna 8 keer meer geheugengebruik en 24 keer meer rekentijd dan strikt noodzakelijk.

Het algoritme van Cooley en Tukey

[bewerken | brontekst bewerken]

Aan de hand van het algoritme van Cooley en Tukey is goed te zien hoe een discrete fouriertransformatie van dimensie 2n gereduceerd kan worden tot 2 transformaties van dimensie n.

Laat een discreet signaal zijn van dimensie 2n. De DFT van dit signaal is:

Noem de ingangsdata met even index:

met DFT ,

en die met oneven index

met DFT .

Dan is:

Merk ook op dat de wegingsfactoren slechts eenmaal berekend hoeven te worden voor de beide n-dimensionale transformaties.