Diskrétní Fourierova transformace (DFT)
Definice
kde je primitivní -tá odmocnina z jedné.
Fourierova báze a ortonormalita
Vektory tvoří ortonormální bázi prostoru vzhledem ke skalárnímu součinu:
Intuice:
- Fourierova báze rozkládá signál do harmonických složek (sinusy a cosiny).
- DFT převádí signál z časové domény do frekvenční.
Lemma R (DFT reálného vektoru)
Pokud je , pak platí:
Důkaz: Použijeme definici a vlastnosti komplexních exponentů a sdružení:
Spektrální rozklad
Každý reálný signál lze vyjádřit jako:
kde a jsou vzory funkcí a .
Výpočet koeficientů:
Z Fourierova obrazu spočteme:
FFT – Rychlý výpočet DFT
DFT v naivním tvaru má časovou složitost . FFT ji snižuje na:
Idea:
- Rekurzivně rozdělit signál na sudé a liché indexy.
- DFT délky rozložíme na dvě DFT délky .
Algoritmus FFT (rekurzivní)
Nerekurzivní FFT (FFT2)
Komplexita:
- Čas:
- Paměť:
Aplikace DFT a FFT
- Zpracování signálu: Rozklad na tóny, redukce šumu, dolní propust
- Násobení polynomů: DFT transformuje součin na součin po složkách
- Kompresní algoritmy: JPEG využívá variantu DFT (DCT)
Konvoluce a spektrální vlastnosti
Konvoluce odpovídá skalárnímu součinu “posunutých” vektorů. Platí:
využívá se v efektivním výpočtu konvoluce.
FFT v konečných tělesech
Fourierovu transformaci lze definovat nejen nad , ale i nad konečnými tělesy, pokud v nich existuje primitivní -tá odmocnina z jedničky.
Příklad:
V tělese , kde je prvočíslo tvaru , platí:
a tedy je primitivní -tá odmocnina z jedničky. Ale problém:
- zřídkakdy mocnina dvou nepoužitelné přímo ve FFT.
Řešení:
Využijeme algebraickou větu:
Multiplikativní grupa je cyklická: takové, že každé nenulové lze zapsat jako .
Tedy je generátor grupy a:
- je primitivní -ní odmocnina z jedničky.
Praktické příklady:
Prvočíslo | Generátor | ||
---|---|---|---|
FFT mimo tělesa
Není třeba pracovat pouze v tělese. Stačí:
- komutativní okruh s jednotkou,
- ve kterém existuje:
- primitivní -tá odmocnina z jedničky ,
- její inverze (vždy existuje: ),
- multiplikativní inverze čísla . Takové okruhy umožňují další varianty FFT (např. při násobení velkých čísel) — bez zaokrouhlovacích chyb jako v .
Na rozdíl od klasické komplexní FFT, kde má iracionální složky numerické chyby,
- FFT v (či vhodném okruhu) je zcela přesná.
- To se využívá v násobení velkých čísel (např. Karatsuba, Schönhage-Strassen).
Násobení polynomů pomocí FFT
Chceme efektivně spočítat součin dvou polynomů a stupně :
Výsledkem je polynom stupně .
Postup (FFT-based násobení)
-
Doplnění nulami: Zvolíme , doplníme , nulami na délku .
-
DFT obou polynomů: Použijeme FFT k výpočtu hodnot , pro , kde je primitivní -tá odmocnina z jedničky.
-
Bodové násobení:
- Inverzní DFT: Získáme zpět koeficienty pomocí inverzní FFT (iDFT), tj.
Složitost
(pro -složkové polynomy po doplnění na )
Intuice
- DFT převede polynom z koeficientové formy do bodové reprezentace.
- V bodové formě lze snadno násobit: hodnoty v odpovídajících bodech se jen vynásobí.
- iDFT převede výsledek zpět do koeficientové reprezentace.