Strona głównaArtykułySygnale i Telekomunikacja

FFT i Analiza Wariacji Częstotliwości: Przekształcanie Sygnałów w Częstotliwości

Jak szybka transformata fouriera rozkłada sygnał z złożonością O(N log N), dlaczego okienkowanie zapobiega wyciekom spektralnym, a STFT buduje spektrogram z przesuwających się częstotliwości.

mysimulator teamZaktualizowano — czerwiec 2026≈ 8 min czytania▶ Otwórz symulację

Każdy sygnał jest w istocie sumą sinusoid

Teoria Josepha Fouriera z 1807 roku – że każda funkcja okresowa może być zapisana jako suma funkcji sinusów i cosinusów o różnych częstotliwościach – była wystarczająco kontrowersyjna, aby wymagała dekad na przyjęcie, a obecnie leży u podstaw niemal każdej technologii przetwarzania sygnałów. Transformata Fouriera przekształca sygnał opisywany w czasie i ponownie go wyraża jako spektrum opisane w częstotliwości: ta sama informacja, widziana z innej osi.

Dla dyskretnego, próbkowanego sygnału o N punktach, Transformata Fouriera Dyskretyzowana (DFT) oblicza amplitudę i fazę N komponentów częstotliwościowych:

X[k] = Σ (n=0 do N-1) x[n] · e^(−i·2π·k·n/N) dla k = 0 .. N-1 x[n] = próbkowany sygnał z domeny czasu X[k] = amplituda zespolona o częstotliwości k/N cykli na próbę |X[k]| = wartość bezwzględna (jak duża jest ta częstotliwość obecna) Obliczana bezpośrednio, jest to operacja O(N²) – każdy z N wyjściowych binów sumuje N próbek wejściowych. Szybka Transformata Fouriera (FFT), popularną dzięki Cooleyemu i Tukeyowi w 1965 roku (choć trik sięgał Gaussa), rekurencyjnie dzieli sumę na połowy o indeksach parzystych i nieparzystych, wykorzystując współdzielone podwyniki i daje ten sam wynik w O(N log N). Ta różnica nie jest akademicka: dla sygnału z milionem próbek to różnica między miliardem operacji a około dwudziestoma milionami – FFT jest powodem, dla którego analiza widma w czasie rzeczywistym, kompresja audio i radiostacje programowe są możliwe na zwykłym sprzęcie.

X[k] = Σ (n=0 to N-1)  x[n] · e^(−i·2π·k·n/N)     for k = 0 .. N-1

x[n] = the sampled time-domain signal
X[k] = complex amplitude at frequency k/N cycles per sample
|X[k]| = magnitude (how much of that frequency is present)
demo na żywo · powiązana symulacja● LIVE

Niepewność, której nie da się obliczyć

Transformata Fouriera Dyskretyzująca (DFT) N próbek pobranych z częstotliwością fs rozkłada częstotliwość na przedziały o szerokości fs/N – więc, aby precyzyjnie określić częstotliwość, potrzebny jest długi okno czasowy. Jednakże długie okno powoduje rozmycie zdarzeń zachodzących w różnych momentach w jego obrębie. Ta zależność jest fundamentalna, a nie szczegółem implementacji: jest to analogia do zasady niepewności Heisenberga w przetwarzaniu sygnałów, i żadne sprytne kodowanie tego nie eliminuje. Można pogodzić rozdzielczość czasową z rozdzielczością częstotliwościową, ale nie można jednocześnie osiągnąć arbitralnie dobrych wartości obu parametrów.

Okienkowanie: ograniczanie wycieków

DFT implikuje założenie, że próbkowany fragment w nieskończoność powtarza się bezproblemowo. Rzeczywiste sygnały rzadko kiedy to robią – wycinając kawałek fali sinusoidalnej, zwykle pozostawia się discontynuuację na krawędzi, którą transformata interpretuje jako zawartość wysokiej częstotliwości, która w rzeczywistości nie istnieje. Ten artefakt nazywa się wyciekiem widmowym i rozmywa ostry pasek widma na sąsiednie biny.

Funkcje okienkowe – Hann, Hamming, Blackman i inne – rozwiązują to, płynnie przycinając sygnał do zera na obu krawędziach fragmentu przed transformacją, kosztem niewielkiej utraty rozdzielczości częstotliwości (nieznacznie szerszej głównej pasma) w zamian za znaczne zmniejszenie wycieków (bardzo niskie pasma bocznego). Wybór funkcji okienkowej jest rzeczywistym wyborem inżynierskim: okno Hanna stanowi rozsądny domyślny standard, podczas gdy okno płaskie poświęca rozdzielczość częstotliwości w celu uzyskania najbardziej dokładnego możliwego odczytu amplitudy znanej tonu.

Spektrogram: obserwacja zmian częstotliwości w czasie

Jedno transformata Fouriera czasu (FFT) daje jeden statyczny widmo dla jednego fragmentu sygnału – bezużyteczne dla sygnałów takich jak mowa lub muzyka, których zawartość częstotliwościowa stale się zmienia. Transformata Krótkotrwałego Przemiany Fouriera (STFT) rozwiązuje to, przesuwając okno FFT wzdłuż sygnału, obliczając nowe widmo dla każdego nakładającego się fragmentu i grupiąc wyniki w spektrogram – obraz 2D z czasem na jednej osi, częstotliwością na drugiej oraz kolorem (lub jasnością) wskazującym energię. Analiza spektrogramu jest sposobem, w jaki fonetyk widzi formanty spółgłosek, jak astronom wykrywa ćwierczące fal grawitacyjne, i jak kodeki kompresji decydują, które częstotliwości ludzkie ucho nie zauważy.

Frequently asked questions

Dlaczego transformata FFT jest znacznie szybsza niż bezpośrednie obliczanie DFT?

Bezpośrednia DFT ponawia obliczenia nakładających się sum od zera dla każdego wyjścia częstotliwości, co kosztuje O(N²) operacji. FFT rekurencyjnie dzieli transformację na połowy o indeksach parzystych i nieparzystych oraz wykorzystuje współdzielone sumy częściowe, zmniejszając koszt do O(N log N) – różnica ta staje się ogromna dla dużych sygnałów.

Dlaczego nie mogę uzyskać zarówno idealnej rozdzielczości czasowej, jak i częstotliwościowej?

Krótki interwał czasowy daje gruboziarnistą rozdzielczość częstotliwościową, ponieważ szerokość bin DFT jest odwrotnie proporcjonalna do długości okna; długie okno zapewnia dokładną rozdzielczość częstotliwościową, ale powoduje rozmycie zdarzeń w różnych momentach wewnątrz niego. Ta kompromis jest fundamentalny z punktu widzenia matematycznego, podobny w duchu do zasady niepewności Heisenberga, a nie ograniczeniem jakiegoś konkretnego algorytmu.

Co w rzeczywistości naprawia funkcja okna?

DFT zakłada, że analizowany fragment bezproblemowo powtarza się w nieskończoność, co wprowadza fałszywe rozłączenie na krawędziach fragmentu, chyba że sygnał dokładnie kończy cykle wewnątrz niego. Funkcja okna wygładza krawędzie sygnału w kierunku zera przed transformacją, znacznie redukując to sztuczne rozłączenie i spowodowane nim wycieki spektralne.

Wypróbuj na żywo

Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz Spectral Analysis i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.

▶ Otwórz symulację Spectral Analysis

Co znalazłeś?

Dodaj kroki odtworzenia (opcjonalnie)