¿Cuál es una buena función de ventana FFT para rechazar DC?

9

Estoy usando un FFT para analizar lo que es esencialmente la envolvente de potencia de una señal (vea aquí para obtener información sobre el proyecto que lo contiene) y, dado que los números de potencia son siempre positivos, para eliminar el componente de CC, me gustaría usar una ventana función que es 50/50 positiva y negativa, frente a la función positiva general.

Tomé la función " plano superior ", eliminé el a0sesgo y lo convertí de cosenos a senos, pero no estoy seguro de que sea óptimo (o incluso significativo).

¿Cualquier sugerencia?

Daniel R Hicks
fuente
99
solo resta la media antes de la ventana?
endolito

Respuestas:

1

La primera derivada de las funciones de ventana continua más comunes (von Hann, etc.) rechazará DC, pero aún tendrá una respuesta de frecuencia de magnitud similar a la de la función de ventana original; por lo que aún puede utilizar sus criterios originales de "bondad" para la selección de ventanas, si no está relacionado con la fase.

hotpaw2
fuente
2
Aunque esta respuesta es principalmente correcta, es más un comentario, por lo que ampliarla sería muy útil.
Phonon
Sin embargo, aborda mi pregunta hasta cierto punto.
Daniel R Hicks
1
¿Hay alguna razón para hacer esto en lugar de restar la media antes de la ventana?
nibot
Si la respuesta de JasonR es correcta, entonces esta idea de rechazar DC a través de la función de ventana (y aún así obtener una buena estimación espectral) no funcionará.
nibot
@nibot: Una posible razón podría ser que una suma además la resta no es posible (no disponible en algunas tuberías de hardware fijo o latencia, por ejemplo.)
hotpaw2
7

Si le preocupa hacer análisis espectrales en una señal con un componente DC grande y desea suprimir ese pico DC, entonces una función de ventana no es lo que desea. Como señalaron algunas otras respuestas, un filtro de paso alto (o, visto de manera diferente, un filtro de muesca con la muesca a frecuencia cero) es una solución adecuada.

Para comprender por qué, debe pensar qué aplica la función de ventana a la respuesta de frecuencia de cada salida DFT. El DFT se define como:

X[k]=norte=0 0norte-1X[norte]mi-j2πnorteknorte

Una interpretación de cómo funciona el DFT es como un banco de filtros en frecuencias igualmente espaciadas entre y . Relanzar la suma anterior de la siguiente manera:- f snorte fs-Fs2Fs2

X[k]=norte=0 0norte-1Xk[norte]

dónde:

Xk[norte]=X[norte]mi-j2πnorteknorte

Entonces, la salida -ésima DFT se genera tomando primero la señal de entrada y multiplicándola por un exponencial complejo a la frecuencia para producir una señal convertida hacia abajo . La señal resultante se suma sobre la ventana de la muestra para producir la salida DFT . Este es efectivamente un filtro de media móvil (a veces llamado filtro de vagón), cuya respuesta al impulso se puede describir como:x [ n ] - 2 π kkX[norte] xk[n]NX[k]-2πknorteXk[norte]norteX[k]

si[norte]={1, X=0 0,1,...,norte-10 0, de otra manera

La respuesta de magnitud del filtro de vagón se puede encontrar tomando la transformada de Fourier de tiempo discreto (DTFT) de esa respuesta de impulso:

El |H(F)El |=El |pecado(norteπFFs)pecado(πFFs)El |

Este es un núcleo Dirichlet , y a veces se lo denomina "sinc periódico", ya que se parece un poco a una función sinc pero se repite periódicamente, lo que no significa un sinc. Esta expresión da la respuesta de magnitud de cada salida DFT, donde se mide como el desplazamiento de frecuencia desde la frecuencia central del bin de salida respectivo. Esto ilustra el efecto de fuga espectral ; cada salida DFT tiene una respuesta de frecuencia que cubre una franja continua del espectro de la señal de entrada, no solo la frecuencia central discreta de cada salida.F

Ahora considere cómo cambian las cosas si aplica una función de ventana a la señal de entrada antes de realizar el DFT:X[norte]

X[k]=norte=0 0norte-1w[norte]X[norte]mi-j2πnorteknorte=norte=0 0norte-1w[norte]Xk[norte]

Con la función de ventana en su lugar, el convertido hacia está pasando efectivamente a través de un filtro FIR con una respuesta de impulso descrita por la función de ventana. Entonces, la respuesta de magnitud por salida del DFT es:Xk[norte]

El |H(F)El |=El |W(F)El |

donde la DTFT de la función de ventana . Ahora tenga en cuenta que si elige una función de ventana que tiene un cero en DC y la utiliza para premultiplicar antes del DFT, en realidad provocaría el efecto no deseado de anular no solo DC en el espectro resultante, sino también las frecuencias centrales de cada una de las salidas DFT. Esto probablemente no sea lo que quieres.W(F)w[norte]X[norte]

Entonces, si realmente desea cancelar el componente de CC de la señal, eliminarlo mediante algún otro tipo de preprocesamiento, no ventanas de dominio de tiempo, es el camino a seguir. Podría usar un filtro de paso alto lineal con una frecuencia de corte muy baja o restar primero la media estimada de la señal, por ejemplo. La elección entre estos métodos debe basarse en las otras restricciones que tiene su sistema.

Jason R
fuente
3

No creo que usar una función de ventana sea una buena forma de eliminar DC. Como se mencionó en el endolito, un método común es restar la media antes de la ventana. Otra opción sería aplicar un filtro de paso alto a su señal antes del análisis, por ejemplo, con una frecuencia de corte de alrededor de 10 Hz.

schnarf
fuente
La aplicación de un filtro de paso alto no es una opción si la señal no existe en forma analógica. Pero creo que usted (y el endolito) tienen razón en que restar la media debería funcionar, especialmente si también se usa una ventana que lleva los puntos finales a cero. (Y un filtro de paso alto necesitaría un punto de corte más bajo, dado que estoy analizando la señal hasta quizás 0.01 Hz.)
Daniel R Hicks
2
¿Por qué cree que necesita una señal analógica para aplicar un filtro de paso alto? Ciertamente es posible crear un HPF digital.
Jason R
@JasonR - Admito que soy bastante ignorante en tales cosas (mis cursos de señales fueron hace 40 años, mucho antes de FFT, et al), pero me parece que para crear un filtro digital de paso alto I Primero tendría que producir la transformada de Fourier de la señal.
Daniel R Hicks,
1
Ese no es el caso en absoluto; puede generar un filtro de paso alto tan bien como un paso bajo, paso de banda, etc. De hecho, existen técnicas para tomar un prototipo de filtro de paso bajo y transformarlo en un filtro de paso alto que tenga una respuesta análoga. La mayoría del software para el diseño de filtros (por ejemplo, MATLAB) se puede usar para hacer todo tipo de filtros.
Jason R
1
No estoy seguro de dónde tuvo la impresión de que implementar un filtro de paso alto requiere diferenciación. La diferenciación es una operación de paso alto, pero no es una implementación adecuada para un filtro de paso alto (ya que su respuesta de frecuencia es una rampa, lo que hace que amplifique frecuencias más altas donde el ruido a menudo está presente). El artículo de Wikipedia sobre filtros de paso alto sería un buen comienzo.
Jason R