Rozdział 7DFT i FFT
Wszystko dotychczas budowało intuicję. To jest rzeczywisty algorytm: mając tylko listę spróbkowanych liczb, oblicz dokładnie, jakie częstotliwości są w sygnale — bez podglądania, jak został zbudowany.
Wzór
Dyskretna Transformata Fouriera bierze $N$ próbek $x_0, x_1, \dots, x_{N-1}$ i produkuje $N$ liczb zespolonych opisujących zawartość częstotliwościową sygnału:
Każde $X_k$ odpowiada na jedno pytanie: „ile jest częstotliwości $k$ (w cyklach na okno próbek)?" $|X_k|$ — moduł tej liczby zespolonej — to dokładnie wysokość słupka, którą widzisz na wykresie powyżej. To ta sama rotacja $e^{-i\theta}$ co okręgi z Rozdziału 4, tylko wykonana raz dla każdej częstotliwości, którą chcesz sprawdzić, zamiast rysowana w czasie.
Dlaczego istnieje FFT
Obliczony bezpośrednio, powyższy wzór kosztuje $O(N^2)$ mnożeń — dla każdej z $N$ częstotliwości wyjściowych sumujesz po wszystkich $N$ próbkach wejściowych. Szybka Transformata Fouriera (FFT) to nie inny wzór; to ta sama DFT obliczona sprytnie, poprzez rekurencyjne dzielenie sumy na próbki o parzystych i nieparzystych indeksach oraz ponowne wykorzystanie pracy między nimi. To obniża koszt do $O(N \log N)$:
| N (próbki) | DFT: N² operacji | FFT: N·log₂N operacji | Przyspieszenie |
|---|
Przy małym $N$ różnica ledwo ma znaczenie. Przy rozmiarach używanych w rzeczywistym przetwarzaniu dźwięku, obrazów i sygnałów radiowych — miliony próbek — FFT jest jedynym powodem, dla którego cokolwiek z tego działa w czasie rzeczywistym.