MATLAB «s filtfilt hace un filtrado hacia adelante y hacia atrás, es decir, filtra, invierte la señal, vuelve a filtrar y luego invierte nuevamente. Aparentemente, esto se hace para reducir los retrasos de fase. ¿Cuáles son las ventajas / desventajas de usar tal filtrado (supongo en un aumento efectivo en el orden de los filtros).

¿Sería preferible usar filtfilt siempre en lugar de filter ( es decir, solo filtrado hacia adelante)? ¿Hay alguna aplicación en la que sea necesario utilizar esto y en las que no se deba utilizar?

Comentarios

Respuesta

Lo mejor es mirarlo en el dominio de la frecuencia. Si $ x [n] $ es la secuencia de entrada y $ h [n] $ es la respuesta al impulso del filtro, entonces el resultado de la primera pasada del filtro es

$$ X (e ^ {j \ omega}) H (e ^ {j \ omega}) $$

con $ X (e ^ {j \ omega}) $ y $ H (e ^ {j \ omega}) $ el Transformadas de Fourier de $ x [n] $ y $ h [n] $, respectivamente. La inversión de tiempo corresponde a reemplazar $ \ omega $ por $ – \ omega $ en el dominio de frecuencia, por lo que después de la inversión de tiempo obtenemos

$$ X (e ^ {- j \ omega}) H (e ^ {- j \ omega}) $$

La segunda pasada de filtro corresponde a otra multiplicación con $ H (e ^ {j \ omega}) $:

$$ X (e ^ {- j \ omega}) H (e ^ {j \ omega}) H (e ^ {- j \ omega}) $ $

que después de la inversión de tiempo finalmente da para el espectro de la señal de salida

$$ Y (e ^ {j \ omega}) = X (e ^ {j \ omega }) H (e ^ {j \ omega}) H (e ^ {- j \ omega}) = X (e ^ {j \ omega}) | H (e ^ {j \ omega}) | ^ 2 \ tag {1} $$

porque para los coeficientes de filtro de valor real tenemos $ H (e ^ {- j \ omega}) = H ^ {*} (e ^ {j \ omega}) $. La ecuación (1) muestra que el espectro de salida se obtiene filtrando con un filtro con respuesta de frecuencia $ | H (e ^ {j \ omega}) | ^ 2 $, whi ch tiene un valor puramente real, es decir, su fase es cero y, en consecuencia, no hay distorsiones de fase.

Esta es la teoría. En el procesamiento en tiempo real, por supuesto, hay un retraso bastante grande porque la inversión de tiempo solo funciona si permite una latencia correspondiente a la longitud del bloque de entrada. Pero esto no cambia el hecho de que no hay distorsiones de fase, es solo un retraso adicional de los datos de salida. Para el filtrado FIR, este enfoque no es especialmente útil porque también podría definir un nuevo filtro $ \ hat {h } [n] = h [n] * h [-n] $ y obtener el mismo resultado con el filtrado ordinario. Es más interesante utilizar este método con filtros IIR, porque no pueden tener fase cero (o fase lineal, es decir un retardo puro).

En resumen:

  • si tiene o necesita un filtro IIR y desea una distorsión de fase cero, Y el retardo de procesamiento no es un problema, entonces este método es útil

  • si la demora en el procesamiento es un problema, no debería usarlo

  • si tiene un filtro FIR , puede calcular fácilmente una nueva respuesta de filtro FIR que es equivalente a usar este método. Tenga en cuenta que con los filtros FIR siempre se puede realizar una fase exactamente lineal.

Comentarios

  • Creé una etiqueta llamada maximum-aposteriori-estimation. ¿Podría cambiarle el nombre a maximum-a-posteriori-estimation? Por error, olvidé el - después del a. Gracias.

Responder

Encontré este video para ser muy, muy útil (se basa en la respuesta de Matt).

Aquí hay algunas ideas clave del video:

  • La fase cero no producirá distorsión de fase, pero dará como resultado un filtro no causal. Esto significa que si los datos se filtran a medida que se recopilan, esta no será una opción (solo válida para datos almacenados que podemos procesar posteriormente) . ingrese la descripción de la imagen aquí
  • Cuando implementa un filtro no causal, los transitorios se vuelven borrosos hacia adelante y hacia atrás (por ejemplo, si queremos una ondulación de 2dB, el hecho que vamos a hacer una ejecución hacia adelante y hacia atrás usando el filtro significa que queremos que cada uno de estos tenga 1 dB). ingrese la descripción de la imagen aquí
  • Utiliza la propiedad de inversión de tiempo de la transformada de Fourier de tiempo discreto. ingrese la descripción de la imagen aquí
  • La respuesta de frecuencia efectiva causada por FILTFILT es la magnitud de eso en una dirección, al cuadrado. Usted toma su señal de entrada, x[n], la filtra, invierte el resultado, vuelve a filtrarla y la invierte nuevamente (el paso de inversión de tiempo requiere que todos los datos estén disponibles). ingrese la descripción de la imagen aquí

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *