Strona główna Matematyka i Analiza Wizualizacja DFT i STFT

🎵 Wizualizacja DFT i STFT

Generuj sygnały i obserwuj ich transformaty Fouriera na żywo. Przełączaj między widmem amplitudowym DFT a spektrogramem STFT, by zobaczyć, jak treść częstotliwościowa zmienia się w czasie. Tryby: sinus, akord, chirp, AM i szum.

Matematyka i Analiza2DŁatwy60 FPS
dft-stft-visualizer ↗ Otwórz osobno
Interfejs samej symulacji jest w języku angielskim.

Podobne symulacje

O wizualizatorze DFT / STFT

Dyskretna transformata Fouriera (DFT) rozkłada skończony ciąg N próbek na N zespolonych składowych częstotliwościowych: Xₖ = Σₙ xₙ · e^(−2πiknN) dla k = 0 … N−1. Ujawnia, jakie częstotliwości składają się na sygnał, ale zakłada, że cały sygnał jest stacjonarny — nie potrafi powiedzieć, kiedy dana częstotliwość występuje. Krótkoczasowa transformata Fouriera (STFT) rozwiązuje ten problem, obliczając DFT dla kolejnych, nakładających się ramek okienkowanych, tworząc dwuwymiarowy spektrogram czasowo-częstotliwościowy. Kompromis jest fundamentalny: wąskie okno daje dobrą rozdzielczość czasową, ale słabą częstotliwościową (zasada nieoznaczoności: Δt · Δf ≥ 1/4π), a szerokie okno odwraca tę równowagę — to samo ograniczenie przypominające zasadę nieoznaczoności Heisenberga, które rządzi mechaniką kwantową.

Symulator pozwala narysować przebieg fali lub wczytać klip audio, a następnie na żywo obserwować widmo DFT i spektrogram STFT. Można dostosować funkcję okna (Hanna, Hamminga, prostokątne) oraz procent nakładania, aby zaobserwować, jak wpływają one na kompromis między rozdzielczością czasową a częstotliwościową.

Najczęściej zadawane pytania

Jaka jest różnica między DFT a FFT?

DFT to sama transformata matematyczna; FFT (szybka transformata Fouriera) to wydajny algorytm jej obliczania. Naiwne obliczenie DFT wymaga O(N²) mnożeń; algorytm FFT Cooleya-Tukeya, opublikowany w 1965 roku, redukuje to do O(N log N), wykorzystując symetrię zespolonych wykładniczych. Dla N = 1 048 576 (2²⁰) próbek jest to około 200 000 razy szybsze. FFT uważany jest za jeden z najważniejszych algorytmów XX wieku.

Czym jest spektrogram i jak się go odczytuje?

Spektrogram to dwuwymiarowy wykres STFT: czas biegnie wzdłuż osi poziomej, częstotliwość wzdłuż pionowej, a kolor lub jasność reprezentuje amplitudę (lub log amplitudy w dB) w każdym przedziale czasowo-częstotliwościowym. Poziome smugi wskazują utrzymujące się tony; pionowe smugi wskazują przejściowe kliknięcia; ukośne smugi wskazują przemiatania częstotliwości (świergoty). Spektrogramy mowy pokazują formanty — ciemne, poziome pasma kodujące tożsamość samogłosek i umożliwiające automatyczne rozpoznawanie mowy.

Dlaczego nie można mieć jednocześnie idealnej rozdzielczości czasowej i częstotliwościowej?

To zasada nieoznaczoności czasowo-częstotliwościowej: Δt · Δf ≥ 1/(4π), gdzie Δt to skuteczny (RMS) czas trwania okna, a Δf to skuteczna szerokość pasma wynikowej odpowiedzi częstotliwościowej. Użycie wąskiego okna lokalizuje zdarzenia w czasie (małe Δt), ale rozmywa widmo (duże Δf), i odwrotnie. Okno Gaussa osiąga minimalny iloczyn nieoznaczoności (przypadek równości), dlatego jest wykorzystywane w analizie falkowej i transformatach Gabora.

Czym są funkcje okna i po co są potrzebne?

Biorąc DFT skończonego bloku próbek, niejawnie mnożysz sygnał przez okno prostokątne — gwałtownie ucinając go na krawędziach. Tworzy to wyciek widmowy: ostre krawędzie wprowadzają fałszywe składowe częstotliwościowe, które rozpraszają energię z silnych tonów do sąsiednich przedziałów. Funkcje okna, takie jak Hanna, Hamminga, Blackmana czy Kaisera, wygładzają sygnał do zera na krawędziach, zmniejszając wyciek kosztem nieco szerszych listków głównych (obniżona rozdzielczość częstotliwościowa). Wybór okna zależy od tego, czy potrzebujesz niskiego wycieku (Blackman) czy wąskiego listka głównego (prostokątne).

Czym jest twierdzenie Nyquista?

Twierdzenie o próbkowaniu Nyquista-Shannona mówi, że sygnał niezawierający częstotliwości powyżej fₘₐₓ można doskonale zrekonstruować z próbek pobieranych z częstotliwością co najmniej 2fₘₐₓ (częstotliwość Nyquista). Próbkowanie poniżej tej częstotliwości powoduje aliasing: składowe wysokoczęstotliwościowe zawijają się i pojawiają jako fantomowe sygnały niskoczęstotliwościowe. Płyty audio CD wykorzystują częstotliwość próbkowania 44 100 Hz, aby uchwycić częstotliwości do 22 050 Hz — nieco powyżej granicy ludzkiego słuchu wynoszącej ~20 000 Hz.

Jaka jest różnica między amplitudą a fazą w DFT?

Każdy współczynnik DFT Xₖ jest liczbą zespoloną z amplitudą |Xₖ| (jak silnie obecna jest częstotliwość k) i fazą arg(Xₖ) (przesunięcie czasowe tej składowej częstotliwościowej względem początku okna). Spektrogramy zwykle pokazują tylko |Xₖ|² (widmo mocy), ponieważ faza jest trudna do wizualnej interpretacji i mniej istotna percepcyjnie dla audio. Faza jest jednak kluczowa dla rekonstrukcji sygnału: odwrotna DFT wymaga zarówno amplitudy, jak i fazy, aby odzyskać oryginalny sygnał.

Jak STFT jest wykorzystywana w kompresji audio?

Kodeki audio MP3 i AAC wykorzystują zmodyfikowaną wersję STFT — zmodyfikowaną dyskretną transformatę kosinusową (MDCT) — aby przekształcić audio do dziedziny częstotliwości. Następnie stosują maskowanie psychoakustyczne: głośne tony maskują pobliskie ciższe, więc bity można przenieść z zamaskowanych częstotliwości do słyszalnych. Rozmiar ramki MDCT jest dynamicznie dostosowywany (dłuższy dla sygnałów stacjonarnych, krótszy dla przejściowych) — dokładnie ten sam kompromis czasowo-częstotliwościowy, który kontroluje rozmiar okna STFT.

Jaki jest związek między STFT a falkami?

Zarówno STFT, jak i transformata falkowa analizują sygnał w wielu lokalizacjach czasowych, ale różnią się sposobem pokrywania płaszczyzny czasowo-częstotliwościowej. STFT wykorzystuje stały rozmiar okna, dając jednolitą rozdzielczość zarówno w czasie, jak i częstotliwości na wszystkich skalach. Transformata falkowa wykorzystuje okno skalujące się z częstotliwością: szersze okna dla niskich częstotliwości (dobra rozdzielczość częstotliwościowa) i węższe okna dla wysokich częstotliwości (dobra rozdzielczość czasowa). Daje to falkom stałą względną szerokość pasma (współczynnik Q), lepiej dopasowaną do sposobu, w jaki ludzki układ słuchowy przetwarza dźwięk.

Czym jest dopełnianie zerami w obliczeniach DFT?

Dopełnianie zerami oznacza dołączanie zer do sygnału przed obliczeniem jego DFT, zwiększając N bez dodawania nowej informacji. Interpoluje widmo częstotliwościowe — przedziały wyjściowe stają się gęściej rozmieszczone w częstotliwości — ułatwiając dostrzeżenie szczytów widmowych. Nie poprawia to jednak rzeczywistej rozdzielczości częstotliwościowej (która jest określona przez prawdziwą długość sygnału, a nie długość po dopełnieniu). Dopełnianie zerami jest powszechnie stosowane do celów wyświetlania oraz do wydajnej splotu za pomocą metod overlap-add lub overlap-save.

⚙ Pod maską

Generuj sygnały i obserwuj ich transformaty Fouriera na żywo. Przełączaj się między widmem amplitudy DFT a spektrogramem STFT, aby zobaczyć, jak zawartość częstotliwościowa zmienia się w czasie. Zawiera tryby sinusoidalny, akordowy, świergotu, AM i szumu.

3D · Renderer Three.js / WebGL · docelowo 60 FPS · działa w całości po stronie klienta, bez instalacji