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):
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.
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.
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 xFreq
wartość z 10.0
na 10.5
itp.