Dlaczego wyciek widmowy powstaje w FFT?

18

Próbowałem google i wikipedia-go, ale nie otrzymałem odpowiedzi poza „to dlatego, że częstotliwość sygnału wejściowego znajduje się między dwoma pojemnikami”.

Rozumiem, że to jest powód, ale nie rozumiem, dlaczego wyciek wydaje się rozciągać na kilka sąsiednich pojemników, a nie tylko na jeden sąsiedni pojemnik.

Aby zilustrować to, o czym mówię, oto niektóre symulowane dane (kod na końcu postu): Freq_10

Powyżej widmo FFT (wykreślone w skali logarytmicznej) fali sinusoidalnej o częstotliwości 10. Częstotliwość próbkowania wynosi jeden, a liczba próbek wynosi 100. Wykres został przesunięty o FFT. Widocznie jest tylko pik w bin 10, a reszta jest w porządku błędu numerycznego, lub mniej więcej.

Freq_10_1

Jest to widmo częstotliwości przy generowanej częstotliwości 10,1. Wyraźnie widać „wyciek” do większej liczby pojemników niż tylko bezpośrednio sąsiadujący pojemnik.

freq_10_5

Jest to wykres dla częstotliwości 10,5.

Pytanie: Dlaczego występuje wyciek i dlaczego rozciąga się on na wszystkie inne pojemniki, a nie na bezpośrednie sąsiednie pojemniki?


Kod dla wszystkich zainteresowanych (kod Python)

import numpy as np
import matplotlib.pyplot as plt

xFreq = 10.5
xSize = 100.0
xPeriod = xSize/xFreq
x = np.linspace(1,xSize,xSize)

data = np.sin(2*np.pi*x/xPeriod)
fft = np.fft.fft(data)
fft = np.fft.fftshift(fft)

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(abs(fft), "o")
ax.set_yscale('log')
plt.show()

Zmieniłem xFreqwartość z 10.0na 10.5itp.

Kitchi
źródło
Każdy sygnał, który nie pasuje dokładnie do długości okna FFT, powoduje nieciągłość podczas jego zawijania. Nieciągłości, takie jak impulsy lub funkcje krokowe, zawierają niektóre ze wszystkich częstotliwości.
endolith,

Odpowiedzi:

12

FFT ma skończoną długość, a zatem stanowi domyślne prostokątne okno w strumieniu danych. Okno w dziedzinie czasu powoduje splot w dziedzinie częstotliwości z transformacją okna. Zauważ, że transformacja okna prostokątnego jest funkcją Sinc (sin (x) / x), która ma nieskończoną szerokość. To nie tylko 2 pojemniki na szerokość. W ten sposób zmarszczki funkcji Sinc będą widoczne jako „wyciek” z dala od jakiegokolwiek piku widmowego, który nie jest idealnie okresowy w długości FFT.

Poniższy rysunek pokazuje część odpowiedzi częstotliwościowej funkcji sinus. Kiedy ton jest wyśrodkowany na jednym z przedziałów, wszystkie pozostałe punkty są wyrównane z zerami w odpowiedzi częstotliwościowej. Jeśli nie jest wyśrodkowany na bin, to jest jak przesunięcie całej odpowiedzi częstotliwościowej, co powoduje, że inne pojemniki spadają na niepuste części odpowiedzi częstotliwościowej.

wprowadź opis zdjęcia tutaj

Innym sposobem spojrzenia na to jest to, że FFT jest tylko zbiorem filtrów, w którym każda podłoga pasma zatrzymania filtra ma wiele tętnień i na pewno nie jest nieskończona w tłumieniu więcej niż 1 bin od częstotliwości środkowej. Niektóre okna (von Hann itp.) Inne niż prostokątne mają dolne pasy ograniczające, co jest jednym z powodów ich popularnego zastosowania.

hotpaw2
źródło
1
Zauważ, że tak zwane „wyciekanie” widmowe nie pojawia się w FFT dokładnie okresowych danych wejściowych zorientowanych na bin, ponieważ funkcja Sinc jest dokładnie zerowa (między zmianami znaków) przy wszystkich innych środkowych częstotliwościach bin (całkowicie prostopadła do tych jąder filtrów i Wektory podstawowe FFT).
hotpaw2
Mam nadzieję, że nie przeszkadza ci edycja. Możesz go podrzucić, jeśli Ci się nie podoba.
Jim Clay
@Jim Clay: Dzięki za dodany wykres. Nie mogłem wymyślić, jak przesłać jeden z mojego iPhone'a.
hotpaw2
1
Dziekuję Dziekuję Dziękuję. Dziękujemy za NIE wyjaśnienie wycieku, mówiąc: „FFT zakłada, że ​​jego sekwencja wejściowa jest okresowa”. To głupie pojęcie „zakładanej okresowości” jest, niestety, zbyt często powtarzane w literaturze DSP. [
Czasami przydaje się założenie okresowości wejściowej, na przykład podczas synchronicznego próbkowania rotacji wału długości ramy FFT (lub tworzenia syntetycznych przykładów w klasie). Ale w przypadku audio (itp.) Sekcje i okienkowanie ramek danych niezwiązanych z żadną długością okresowości jest bardziej powszechne, co sprawia, że ​​założenie jest zwykle fałszywe w przypadku pracy w tych obszarach.
hotpaw2
0

hotpaw2odpowiedź jest dobra, ale chciałbym trochę rozwinąć user5133komentarz:

Dziękujemy za NIE wyjaśnienie wycieku, mówiąc: „FFT zakłada, że ​​jego sekwencja wejściowa jest okresowa”. To głupie pojęcie „zakładanej okresowości” jest, niestety, zbyt często powtarzane w literaturze DSP

i jednocześnie odpowiedzieć na pytanie. Pamiętaj, że jestem ekspertem w tej dziedzinie --- możesz komentować, poprawiać lub potwierdzać.

Z{1,2),,N.}

X(ω)=n=-x[n]mi-jaωn.

N.N.Z

Xk =def n=0N1xne2πikn/N,kZ
X(2πk/N)n{1,2,,N}x[n]w[n]wn{1,,N}

Ale transformata Fouriera produktu jest splotem transformacji Fouriera:

F{fg}=F{f}F{g}

sinc

w(f)ejωtdt=ττejωtdt=2τsinc(ωτ)

sinc

anderstood
źródło
wygląda na to, że @ user5133 już się nie kręci. ale wdzięczność Ricka jest niewłaściwa: „Dziękuję, że NIE wyjaśniłeś wycieku, mówiąc:„ FFT zakłada, że ​​jego sekwencja wejściowa jest okresowa ”. To głupie pojęcie „zakładanej okresowości” powtarzane jest niestety zbyt często w literaturze DSP ”. Myli się. DFT z pewnością okresowo rozszerza przekazywane do niego dane o skończonej długości. DFT robi przyjąć dane przekazywane do niej jest jednym okresem okresowych sekwencji.
Robert Bristol-Johnnson