¿Por qué surge la fuga espectral en una FFT?

18

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): Freq_10

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.

Freq_10_1

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.

freq_10_5

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 xFreqvalor de 10.0a 10.5, etc.

Kitchi
fuente
Cualquier señal que no se ajuste exactamente a la longitud de la ventana de la FFT produce una discontinuidad cuando la envuelve. Las discontinuidades, como los impulsos o las funciones escalonadas, contienen algunas de todas las frecuencias.
Endolith

Respuestas:

12

Una FFT tiene una longitud finita y, por lo tanto, constituye una ventana rectangular predeterminada en un flujo de datos. Una ventana en el dominio del tiempo da como resultado una convolución en el dominio de la frecuencia con la transformación de la ventana. Tenga en cuenta que la transformación de una ventana rectangular es una función Sinc (sin (x) / x), que tiene un ancho infinito. No son solo 2 contenedores de ancho. Por lo tanto, las ondas de la función Sinc aparecerán como "fugas" lejos de cualquier pico espectral que no sea perfectamente periódico en la longitud de la FFT.

La siguiente imagen muestra parte de la respuesta de frecuencia de la función sinc. Cuando el tono se centra en uno de los contenedores, todos los otros puntos se alinean con los nulos en la respuesta de frecuencia. Si no está centrado en un contenedor, entonces es como cambiar toda la respuesta de frecuencia, lo que hace que los otros contenedores caigan en porciones no nulas de la respuesta de frecuencia.

ingrese la descripción de la imagen aquí

Otra forma de verlo es que un FFT es solo un banco de filtros, donde cada piso de la banda de detención del filtro tiene muchas ondulaciones, y ciertamente no tiene una atenuación infinita a más de 1 bin de la frecuencia central. Algunas ventanas (von Hann, etc.) que no sean rectangulares tienen bandas de detención más bajas, lo cual es una razón para su uso popular.

hotpaw2
fuente
1
Tenga en cuenta que la llamada "fuga espectral" no aparece en la FFT de entradas periódicas centradas exactamente en el contenedor porque la función Sinc es exactamente cero (entre cambios de signo) en todas las demás frecuencias centrales del contenedor (completamente ortogonal a esos núcleos de filtro y Vectores de base FFT).
hotpaw2
Espero que no te importe la edición. Siéntete libre de tirarlo si no te gusta.
Jim Clay
@ Jim Clay: Gracias por el gráfico agregado. No pude averiguar cómo enviar uno desde mi iPhone.
hotpaw2
1
Gracias, gracias, gracias. Gracias por NO explicar la fuga diciendo: "La FFT supone que su secuencia de entrada es periódica". Tristemente, esa noción tonta de "periodicidad supuesta" se repite con demasiada frecuencia en la literatura de DSP. [-Rick-]
Ocasionalmente, la suposición de periodicidad de entrada es útil, por ejemplo, cuando se realiza un muestreo sincrónico de rotación del eje de la longitud del cuadro FFT (o se crean ejemplos sintéticos en el aula). Pero con el audio (etc.), los marcos de datos de secciones y ventanas no relacionados con cualquier duración de periodicidad son más comunes, lo que hace que la suposición sea generalmente falsa para el trabajo en esas áreas.
hotpaw2
0

hotpaw2La respuesta es buena, pero me gustaría explicar un poco el user5133comentario:

Gracias por NO explicar la fuga diciendo: "La FFT supone que su secuencia de entrada es periódica". Tristemente, esa noción tonta de "periodicidad supuesta" se repite con demasiada frecuencia en la literatura de DSP

y al mismo tiempo responde la pregunta también. Tenga en cuenta que soy un experto experto en este campo --- no dude en comentar, corregir o confirmar.

Z{1,2,,N}

X(ω)=n=x[n]eiωn.

NNZ

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

Pero la transformación de Fourier de un producto es la convolución de las transformadas de Fourier:

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

sinc

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

sinc

entendido
fuente
Parece que @ user5133 ya no está dando vueltas. pero la gratitud de Rick está fuera de lugar: "Gracias por NO explicar la fuga diciendo: 'La FFT supone que su secuencia de entrada es periódica'. Tristemente, esa noción tonta de "periodicidad asumida" se repite con demasiada frecuencia en la literatura de DSP ". El esta equivocado. El DFT ciertamente extiende periódicamente los datos de longitud finita que se le pasan. La DFT hace asumir los datos pasados a ella es de un período de una secuencia periódica.
robert bristow-johnson