J'ai essayé de googler et de wikipedia, mais je n'ai obtenu aucune réponse au-delà de "c'est parce que la fréquence du signal d'entrée se situe entre deux cases".
Je comprends que c'est la raison, mais ce que je ne comprends pas, c'est pourquoi la fuite semble s'étendre à plusieurs bacs adjacents plutôt qu'à un seul bac adjacent.
Pour illustrer ce dont je parle, voici quelques données simulées (code à la fin du post):
Ci-dessus, le spectre FFT (tracé sur une échelle logarithmique) d'une onde sinusoïdale de fréquence 10. Le taux d'échantillonnage est de un et le nombre d'échantillons est de 100. Le graphique a été décalé FFT. Il n'y a clairement qu'un pic au bac 10, et le reste est de l'ordre de l'erreur numérique, ou à peu près.
Il s'agit du spectre de fréquences à une fréquence générée de 10,1. Il y a clairement une «fuite» dans plus de bacs que le bac immédiatement adjacent.
Ceci est l'intrigue pour une fréquence de 10,5.
Question: Pourquoi y a-t-il cette fuite et pourquoi s'étend-elle à tous les autres bacs plutôt qu'au bac adjacent immédiat?
Code, pour toute personne intéressée (code 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()
J'ai changé la xFreq
valeur de 10.0
en 10.5
, etc.