Consideremos este ejemplo:
Fs=1000;
Ns=500;
t=0:1/Fs:(Ns-1)*1/Fs;
f1=10;
f2=400;
x=5+5*sin(2*pi*f1*t)+2*sin(2*pi*f2*t);
X=fft(x);
En este escenario, la resolución de frecuencia es 2 y todos los componentes de frecuencia se capturan correctamente. Sin embargo, si hago esto:
X=fft(x,1000);
la resolución de frecuencia es 1, pero hay una fuga espectral. Efecto similar se ve aquí . Me parece que las transformadas de Fourier de ambas ventanas (una con una longitud de 500 y otra con una longitud de 1000) tienen ceros en las frecuencias que se presentan en la señal, así que no veo por qué ocurrirá una fuga.
fft
frequency-spectrum
dft
usuario3616359
fuente
fuente
Respuestas:
Y una parte ampliada:
Cosas a tener en cuenta:
También podemos observar el ruido FFT en la parte inferior.
Y obviamente el código para reproducir los resultados:
fuente
La fuga espectral suele ser otro nombre para el efecto de convolución de Sinc o el artefacto de la ventana rectangular en el otro dominio (t o tiempo en su caso). Y el relleno cero se realiza agregando una ventana rectangular (que es su información original que no es cero) a una FFT más larga.
Su hipótesis de que el FT debe ser cero en todas las frecuencias menos una es en general falsa. Cualquier señal de longitud finita (y distinta de cero) tendrá una extensión infinita de espectro distinto de cero. Esa extensión infinita del espectro (en forma de Sinc, o la transformación de otras ventanas) pasará a ser invisible en un resultado DFT / FFT solo para sinusoides puros que abarcan todo el ancho FFT con una periodicidad entera exacta en ese ancho. El relleno cero no lo permite.
fuente
La fuga surge notablemente con ventanas de longitud finita, que siempre tiene en la práctica. Sin embargo, si tiene exactamente un número entero de períodos de sus componentes sinusoidales, la periodización inherente FFT actúa como si los senos fueran "infinitos", y sus frecuencias caen exactamente en contenedores discretos. Y así, la fuga se cancela de alguna manera, por pura suerte: si supiera de antemano el período de su señal, no necesitaría analizarlo con las herramientas de Fourier.
Con el relleno cero ya no tienes un seno puro. Tampoco con período múltiple de ventana múltiple. Estás concatenando trozos de senos que tienen cambios abruptos en los límites de la ventana. Entonces, toda la señal periodizada ya no es un "seno infinito". Por lo tanto, puede obtener lo que asimila con las fugas, pero que es un efecto de relleno cero, como lo explica perfectamente @jojek.
fuente