Jaki jest związek między długością FFT a rozdzielczością częstotliwości?


67

Jeśli próbowałem sygnał przy użyciu odpowiednich metod próbkowania (Nyquist, filtrowanie itp.) Jak powiązać długość mojego FFT z uzyskaną rozdzielczością częstotliwości, którą mogę uzyskać?

Jakbym miał długość fali sinusoidalnej 2000 Hz i 1 999 Hz, jak miałbym określić długość FFT potrzebną do dokładnego określenia różnicy między tymi dwiema falami?

Odpowiedzi:


81

Rozdzielczość częstotliwości zależy od zależności między długością FFT a częstotliwością próbkowania sygnału wejściowego.

Jeśli zbierzemy 8192 próbek do FFT, będziemy mieli:

8192 próbki2)=4096 Pojemniki FFT

Jeśli nasza częstotliwość próbkowania wynosi 10 kHz, to twierdzenie Nyquista-Shannona o próbkowaniu mówi, że nasz sygnał może zawierać zawartość częstotliwości do 5 kHz. Nasza rozdzielczość przedziału częstotliwości to:

5 kHz4096 Pojemniki FFT1.22 Hzkosz

Może to być łatwiejszy sposób wyjaśnienia tego koncepcyjnie, ale uproszczony: rozdzielczość bin to po prostu , gdzie to częstotliwość próbkowania sygnału wejściowego, a N to liczba punktów FFT zastosowana (długość próbki). fsampfaszampN.faszamp

Widzimy z powyższego, że aby uzyskać mniejsze pojemniki FFT, możemy albo uruchomić dłuższy FFT (tj. Pobrać więcej próbek z tą samą częstotliwością przed uruchomieniem FFT) lub zmniejszyć naszą częstotliwość próbkowania.

The Catch:

Zawsze występuje kompromis między rozdzielczością czasową a rozdzielczością częstotliwości.

W powyższym przykładzie musimy zebrać 8192 próbek, zanim będziemy mogli uruchomić FFT, co przy próbkowaniu przy 10 kHz zajmuje 0,82 sekundy.

Gdybyśmy próbowali uzyskać mniejsze pojemniki FFT, uruchamiając dłuższy FFT, pobranie potrzebnych próbek zajęłoby jeszcze więcej czasu.

To może być OK, może nie być. Ważne jest to, że przy stałej częstotliwości próbkowania zwiększenie rozdzielczości częstotliwości zmniejsza rozdzielczość czasową. Oznacza to, że im dokładniejszy jest pomiar w dziedzinie częstotliwości, tym mniej dokładna może być w dziedzinie czasu. Skutecznie tracisz wszystkie informacje o czasie wewnątrz długości FFT.

W tym przykładzie, jeśli ton 1999 Hz zacznie się i zatrzyma w pierwszej połowie próbki FFT 8192, a ton 2002 Hz zostanie odtworzony w drugiej połowie okna, zobaczymy oba, ale wydaje się, że wystąpiły w tym samym czas.

Musisz również wziąć pod uwagę czas przetwarzania. 8FT punkt FFT wymaga przyzwoitej mocy obliczeniowej. Sposobem na zmniejszenie tej potrzeby jest zmniejszenie częstotliwości próbkowania, która jest drugim sposobem na zwiększenie rozdzielczości częstotliwości.

W twoim przykładzie, jeśli obniżysz częstotliwość próbkowania do czegoś takiego jak 4096 Hz, potrzebujesz tylko 4096 punktów FFT, aby osiągnąć przedziały 1 Hz * 4096 Hz, to potrzebujesz tylko 4096 punktów FFT, aby osiągnąć przedziały 1 Hz i nadal możesz rozwiązać Sygnał 2kHz. Zmniejsza to rozmiar bin FFT, ale także zmniejsza szerokość pasma sygnału.

Ostatecznie z FFT zawsze będzie kompromis między rozdzielczością częstotliwości a rozdzielczością czasu. Musisz osiągnąć trochę równowagi, aby osiągnąć wszystkie cele.


z tagami nagłówka i pewnym formatowaniem ten post może przejść od dobrego do świetnego. Dotknąłeś wszystkiego, co chciałem zauważyć, i bardzo dobrze, ale sposób formatowania postu powoduje, że mniej osób będzie go czytało, ponieważ jego długość jest wygórowana, jeśli podasz nagłówki z każdą sekcją omawianych osób, przeskoczą do soczystego kawałka to im odpowiada, a twoja liczba + 1 bardzo wzrośnie. Oczywiście nie ode mnie, bo już to zasłużyłeś.
Kortuk

@kurtuk Wyplułem to w pośpiechu, posprzątam formatowanie, kiedy będę miał trochę wolnego czasu (lub możesz go edytować, jeśli chcesz).
Mark

1
@kortuk, nazwa zaczyna się od „o”. Zakładałem, że tak, po prostu podzielałem mój pogląd, zarówno dla ciebie, jeśli jeszcze tego nie wiesz, ale dla całej społeczności.
Kortuk

1
Pamiętaj, że nie musisz obliczać FFT. Jeśli chcesz poznać tylko kilka pojemników, taniej jest obliczyć DFT tylko tych pojemników, niż uruchomić zoptymalizowany FFT, który oblicza wszystkie pojemniki jednocześnie, współużytkując wiele operacji.
Chris Stratton

Warto również zauważyć, że podobny kompromis w dziedzinie częstotliwości / czasu dotyczy filtrów analogowych i filtrów IIR.
Caleb Reister

10

fasN.fas

Zdolność rozróżniania dwóch bardzo blisko siebie rozmieszczonych sygnałów zależy w dużym stopniu od amplitud względnych i zastosowanej funkcji okienkowania.

Może się okazać, że zabawa analizatorem sygnałów Baudline jest dobrym sposobem na rozwinięcie intuicji w tej sprawie - i nie, uruchamianie kilku FFT i wykreślanie jednego widma na raz w Matlabie lub Pythonie / Numpy nie jest tak naprawdę takie samo.

EDYCJA: Istnieje również sztuczka polegająca na wypełnianiu danych wejściowych zerami i przyjmowaniu większego FFT. Nie poprawi to twojej zdolności różnicowania, ale może sprawić, że widmo będzie bardziej czytelne. Jest to w zasadzie sztuczka podobna do antyaliasingu w grafice wektorowej.


Czy jestem jedynym, który nie widzi poprawnie wyświetlanego kodu lateksowego?
stevenvh

@stevenvh Również dla mnie nie działa.
taras

Pracuje dla mnie. Lateks to tylko 2 miejsca.
Kortuk

2
Naprawiono (już od pewnego czasu). Dodatek NoScript do przeglądarki Firefox zablokował mathjax.org.
stevenvh

3

Warto zauważyć, że FFT jest alternatywą dla obliczania liczby oddzielnych par sum (k = 0..próbka_długość-1) próbki [k] * SineRefWave [j] [k] i próbki [j] * CosRefWave [j ] [k], dla wszystkich j do połowy długości próbki. Jeśli potrzebne są odczyty amplitudy przy wszystkich tych częstotliwościach, FFT obliczy je wszystkie w czasie O (NlgN), podczas gdy obliczenie ich indywidualnie zajmie czas O (N ^ 2). Z drugiej strony, jeśli potrzebne są tylko odczyty amplitudy przy kilku częstotliwościach, często lepiej jest po prostu obliczyć je indywidualnie, szczególnie jeśli używa się procesora lub procesora DSP, który może skutecznie obliczyć ten styl sumy.

Warto również zauważyć, że podczas gdy FFT z np. Oknem próbkowania 20 ms nie będzie w stanie rozróżnić pojedynczego tonu 1975Hz lub kombinacji częstotliwości (1975-N) Hz i (1975 + N) Hz dla N <25, można go użyć do pomiaru izolowanych częstotliwości z dokładnością lepszą niż okno próbkowania, jeśli w pobliżu nie ma innej zawartości spektralnej. Samotna częstotliwość 1975Hz będzie odbierać równo w przedziałach 1950Hz i 2000Hz, podobnie jak kombinacja tonów 1974Hz i 1976Hz. Jednak izolowany dźwięk 1974 Hz wziąłby się silniej w przedziale 1950 Hz niż w przedziale 2000 Hz, a dźwięk 1976 Hz wziąłby się silniej w przedziale 2000 Hz.


1

Rozdzielczość częstotliwości nie zależy od długości FFT, ale od długości całkowitego czasu próbkowania T, tj. Wynosi 1 / T, co jest również najniższym składnikiem częstotliwości, jaki otrzymałeś.

Uwaga: wypełnienie zerowe nie zwiększa rozdzielczości częstotliwości; DFT zerowego sygnału wypełniającego jest jedynie lepszym przybliżeniem DTFT sygnału wyjściowego.


0

Jeśli znasz zakres możliwych częstotliwości wejściowych, a zakres jest wąski, możesz zastosować podzakres próbkowania, aby zmniejszyć liczbę próbek i czas obliczania FFT. Przy 256 próbkach i częstotliwości próbkowania 256 Hz otrzymujesz pożądaną rozdzielczość 1 Hz i pasmo wolne od aliasów 128 Hz.


-3

spójrz na to zdjęcie. jest jasne. związek między rozdzielczością fs a fft

wprowadź opis zdjęcia tutaj


5
Z tego obrazu nie jest do końca jasne, co się dzieje. (Nie pomaga to, że obraz nie jest w języku angielskim.) Co to dodaje, że inne odpowiedzi nie wspomniały?
Greg d'Eon
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.