He intentado buscar en Google y wikipedia, pero no he recibido ninguna respuesta más allá de "es porque la frecuencia de la señal de entrada se encuentra entre dos contenedores".
Entiendo que esta es la razón, pero lo que no puedo entender es por qué la fuga parece extenderse a varios contenedores adyacentes en lugar de a uno solo.
Para ilustrar de lo que estoy hablando, aquí hay algunos datos simulados (código al final de la publicación):
Arriba está el espectro FFT (trazado en una escala logarítmica) de una onda sinusoidal de frecuencia 10. La frecuencia de muestreo es uno y el número de muestras es 100. El gráfico se ha desplazado FFT. Claramente, solo hay un pico en el contenedor 10, y el resto está en el orden del error numérico, o alrededor.
Este es el espectro de frecuencia a una frecuencia generada de 10.1. Claramente, hay una "fuga" en más contenedores que solo el contenedor adyacente.
Este es el gráfico para una frecuencia de 10.5.
Pregunta: ¿Por qué existe esta fuga y por qué se extiende a todos los otros contenedores, en lugar del contenedor adyacente inmediato?
Código, para cualquier persona interesada (código 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()
Cambié el xFreq
valor de 10.0
a 10.5
, etc.