Rychlá Fourierova transformace ( FFT , FFT ) je algoritmus pro zrychlený výpočet diskrétní Fourierovy transformace , který umožňuje získat výsledek za kratší čas (požadovaný pro přímý výpočet podle vzorce). Někdy je rychlá Fourierova transformace chápána jako jeden z algoritmů, nazývaný frekvenčně-časový decimační algoritmus, který má složitost .
Algoritmus je použitelný pro všechny komutativní asociativní kruhy s jednotkou, častěji se používá v oboru komplexních čísel (c ) a na zbytkové kruhy (což je zejména počítačový celočíselný typ ).
Při aplikaci základního algoritmu lze diskrétní Fourierovu transformaci provádět v akcích pro , zejména když jsou akce potřebné .
Diskrétní Fourierova transformace transformuje množinu čísel na množinu čísel , taková , kde je primitivní kořen jednoty , tedy pro . Hlavním krokem algoritmu je zredukovat problém čísel na problém s menším číslem. Pro přes obor komplexních čísel zavedeme: , , kde je libovolné číslo. Diskrétní Fourierova transformace může být reprezentována jako . (Tyto výrazy lze snadno získat, pokud se původní součet rozdělí na menší počet součtů s menším počtem členů a výsledné součty se pak posunem indexů a jejich následným přejmenováním dostanou do stejné podoby).
Takto:
.S ohledem na to a konečný záznam:
.Dále se vypočítá každý , kde , zde je stále nutné provádět akce, to znamená, že operace se provádějí v této fázi .
Dále se uvažuje kde . Při nahrazení v posledním vzorci zůstaly výrazy v závorkách nezměněny, a protože byly vypočteny již v předchozím kroku, je k výpočtu každého z nich zapotřebí pouze akce. Celková čísla. Operace v tomto kroku jsou tedy . To druhé platí s dobrou přesností pro všechny .
Je logické použít algoritmus rychlé Fourierovy transformace pro , protože s malým počtem vzorků poskytuje malý nárůst rychlosti ve srovnání s přímým výpočtem diskrétní Fourierovy transformace. K úplnému přechodu na sadu čísel jsou tedy nutné akce. Nezáleží tedy na tom, na která dvě čísla se má rozdělit - odpověď se tím příliš nezmění. Počet operací lze snížit pouze dalším rozdělením .
Rychlost algoritmu :
To znamená, že počet operací pro jakékoli rozdělení na dvě čísla je , kde .
Pro inverzní Fourierovu transformaci můžete použít přímý algoritmus Fourierovy transformace - stačí použít místo něj (nebo použít operaci komplexní konjugace nejprve na vstupní data a poté na výsledek získaný po přímé Fourierově transformaci) a rozdělit konečný výsledek podle .
Obecný případ lze zredukovat na předchozí. Pro držení:
.Označení to dopadá:
,pokud je uvedeno na .
Problém se tedy redukuje na výpočet konvoluce , ale to lze provést pomocí tří Fourierových transformací pro prvky: přímá Fourierova transformace se provede pro a , výsledky se vynásobí prvek po prvku a provede se inverzní Fourierova transformace.
Výpočet všeho a vyžaduje akci, tři Fourierovy transformace vyžadují akci, násobení výsledků Fourierových transformací vyžaduje akci, výpočet všeho, znalost hodnot konvoluce vyžaduje akci. Celkem diskrétní Fourierova transformace vyžaduje akce pro libovolné .
Tento algoritmus rychlé Fourierovy transformace může fungovat na prstenci pouze tehdy, když jsou primitivní kořeny jednoty známy v mocninách a .
Nejběžnějším rychlým algoritmem Fourierovy transformace je Cooley-Tukeyův algoritmus , ve kterém je diskrétní Fourierova transformace vyjádřena jako součet diskrétních Fourierových transformací nižších dimenzí a rekurzivně, aby bylo dosaženo složitosti . Elementární artikulační krok menších Fourierových transformací v tomto algoritmu se nazývá " motýl ". Ve výpočetní technice se nejčastěji používá rekurzivní půlení transformací základ 2 (ačkoli lze použít jakýkoli základ) a počet vstupních vzorků je mocninou dvou. Pro případy, kdy se diskrétní transformace vypočítává z počtu vzorků, které jsou prvočísly, lze použít algoritmy Bluestein a Rader.
Například pro výpočet rychlé Fourierovy transformace pomocí Cooley-Tukeyho algoritmu se základem 2 pro vektor sestávající z prvků:
,s prvky formuláře:
diskrétní transformaci lze vyjádřit jako součet dvou částí: součet sudých indexů a součet lichých indexů :
.Koeficienty a lze přepsat takto:
Jako výsledek:
Výpočet tohoto výrazu lze zjednodušit pomocí:
V důsledku zjednodušení označíme diskrétní Fourierovu transformaci sudých indexů pomocí a transformaci lichých indexů pomocí , for dostaneme:
Tato položka je základem Cooley-Tukeyho algoritmu se základem 2 pro výpočet rychlé Fourierovy transformace, to znamená, že diskrétní transformace z vektoru sestávajícího ze vzorků je redukována na lineární složení dvou diskrétních Fourierových transformací ze vzorků, a pokud původní úkol vyžadoval operace, pak pro výslednou skladbu - (kvůli opětovnému použití mezivýsledků výpočtů a ). Pokud je mocnina dvou, pak toto dělení může pokračovat rekurzivně, dokud nedosáhne dvoubodové Fourierovy transformace, která se vypočítá podle následujících vzorců:
Při rekurzivním dělení diskrétní Fourierovy transformace ze vstupních hodnot součtem 2 diskrétních transformací ze vstupních hodnot se složitost algoritmu rovná .