Search
  • JuanS

IIR vs FIR: Entendiendo realmente sus diferencias

A menudo cuando escucho discusiones sobre los filtros IIR y FIR, me sorprende mucho encontrar tantas concepciones erróneas acerca de los mismos. En realidad muchas de las cosas que se suelen plantear como diferencias claves entre unos y otros vienen del hecho de sus usos más comunes; sin embargo, entendiendo con claridad qué significan en realidad estas siglas (que es muy diferente de conocer las siglas en sí mismas) no es difícil ver porqué la mayoría de estas concepciones terminan siendo erróneas.


¿Qué son?

Lo primero es entrar directamente a sus definiciones. Los filtros IIR (Infinite Impulse Response) como su nombre lo indica tienen respuestas impulso de longitud infinita; por el contrario, los filtros FIR (Finite Impulse Response) tienen respuestas impulso finitas. La clave para esta diferenciación, y la razón detrás de poder generar una salida de longitud infinita al excitar un sistema con un impulso, reside principalmente en una estructura de retroalimentación. La única manera de que una respuesta impulso se extienda por un tiempo infinito es que de alguna manera la salida del sistema sea conectada al mismo sistema para generar una recursión en donde, en cada nuevo instante, la salida esté determinada por la o las salidas previas.


En general, los filtros digitales se construyen con dos bloques elementales: Los retrasos y las ganancias. Estos dos elementos se conjugan en ingeniosas estructuras para generar efectos deseables en el dominio de la frecuencia. Este proceso se puede llevar a cabo de miles de formas diferentes. Hay estrategias muy variadas y ciertamente interesantes para diseñar estos filtros; sin embargo, en este artículo, sólo nos compete entender la diferencia entre estas dos grandes categorías FIR vs IIR.


FIR

Comencemos por los filtros FIR, que aunque parecen un poco menos comunes, creo que son más intuitivos en su estructura. La base de los filtros FIR consiste en conectar la entrada del filtro a una serie de retardos. El primero con sólo una muestra de retraso, el segundo con dos, el tercero con tres y así sucesivamente. En seguida se amplifica o atenúa cada retraso con un factor de ganancia específico y finalmente se suman las salidas. Al organizar estas ganancias una detrás de otra obtenemos la respuesta impulso del filtro. Además por lo que la estructura es análoga a una línea de retrasos con múltiples salidas (Delay tapped line), solemos hablar de "Taps" que en realidad sólo son los factores de ganancias, coeficientes del filtro o valores de la respuesta impulso. Así de sencillo es un filtro FIR. La siguiente animación muestra ese proceso y, en particular, cómo los factores de ganancia del filtro son equivalentes a los coeficientes de la respuesta impulso.



IIR

Un filtro IIR, además de utilizar retrasos para los valores a la entrada del filtro, toma también los valores de la salida, les aplica una nueva cadena de retrasos y retroalimenta esta señal a la entrada del filtro. Este elemento adicional permite la obtención de funciones de transferencia "interesantes" sin requerir una gran cantidad de elementos. Entender cómo se logran estas funciones de transferencia, tanto en el caso los filtros FIR y los IIR, es un proceso nada sencillo que se logra a través de la solución de ecuaciones de diferencias (sumas y restas de entradas y salidas con retrasos) por medio de la transformada-Z (una "versión discreta" de la transformada de Laplace). Quizás en un artículo futuro podríamos explorar estos detalles. La siguiente animación muestra este proceso. Noten que la respuesta impulso dura muchas muestras más que la cantidad de retrasos que existen en el sistema.


Algunos ejemplos sencillos

Analicemos rápidamente un filtro FIR sencillo. Su respuesta impulso (y por tanto las ganancias de retrasos asociados) será 0.5 y 0.5. Este filtro es claramente un filtro pasa bajos (Por supuesto :) ). Para evidenciar esto, notemos que si la entrada fuera una amplitud constante (DC), la salida no se vería afectada. La salida para cada muestra sería la mitad del valor de entrada sumado a la mitad del valor de entrada en la muestra anterior. Dado que, tanto la muestra actual como la anterior tienen el mismo valor por ser una señal de amplitud constante, la salida sería equivalente a la entrada. En otras palabras la función de transferencia tiene una ganancia unitaria en 0Hz. Por lo contrario, si la señal fuese una senoidal sobre la frecuencia de Nyquist (recordemos que a la frecuencia de Nyquist, la onda tiene dos muestras por periodo) la misma oscilaría entre dos valores por lo que podemos asumir que esta senoidal se mueve entre +1 y -1. Claramente si filtramos esta señal con un filtro FIR cuya respuesta impulso es [0.5, 0.5]. Cada muestra sería la mitad de su valor actual sumado con la mitad del valor de la muestra anterior. En este caso esa suma siempre da 0. En otras palabras, ¡la función de transferencia de este filtro tiene una ganancia de -infinitos decibeles sobre la frecuencia de Nyquist! En efecto es un filtro pasa bajos.


Los filtros IIR son un poco más difíciles de analizar. Sin embargo, veamos un ejemplo sencillo. Supongamos que un filtro IIR está definido de manera que la salida se calcula como la suma de la entrada actual más 0.9 veces su salida anterior. Si pasamos un impulso por este filtro el primer valor de salida sería 1 ya que la entrada fue el impulso. Sin embargo, tras esta muestra ya no habría mas señal dado que el impulso tiene una duración de tan solo una muestra. Lo único que queda es computar la salida anterior (1) para la nueva salida como el 90% de su valor. La salida para la muestra número dos sería entonces 0.9. Repetimos este proceso y ahora calculamos el 90% de la salida anterior que fue 0.9 obteniendo una salida de 0.81. Seguimos realizando este proceso hasta que la salida tenga un valor constante de 0. ¿Cuándo pasa esto? ¡Nunca! La respuesta impulso será [1, 0.9, 0.81, 0.729, 0.6561, 0.59049] y seguirá la fórmula 0.9^n en donde n es el número de la muestra que queremos calcular (empezando en 0). Esta serie geométrica nunca llega a 0 y casi es equivalente a la paradoja de Zenón. En esta, se cuenta como Aquiles, quien perseguía a una tortuga logra cortar su distancia con el animal a la mitad cada poco tiempo. Sin embargo, como a cada periodo de tiempo acorta su distancia a la mitad de lo que le falta nunca llega a alcanzar a la tortuga. Por supuesto, tanto en el caso de Aquiles como en el nuestro, la cualidad infinita de la situación depende de una resolución ilimitada. En nuestro caso, en algún momento la respuesta impulso caerá por debajo de los valores representables en un sistema digital y llegará a su fin.


Este último punto, es en realidad crucial para correcto desarrollo del DSP. Dado que usamos arquitecturas en coma flotante, tenemos unas capacidades sorprendentes para representar números muy pequeños. ¡PERO! Hay un pequeño problema escondido en todo esto. ¿Recuerdan los números subnormales del post sobre profundidad de bits? ¿Aquellos en donde la representación numérica ha agotado el menor exponente posible en la coma flotante y las operaciones aritméticas se vuelven increíblemente costosas? Si un filtro IIR está mal diseñado, la respuesta impulso del mismo puede llegar hasta el rango subnormal, y entonces, ¡nuestro computador empieza a hacer su mejor esfuerzo por representar de manera precisa valores por allá en unos -300 dBfs!. Siempre me pregunto si todo el Freeware que encontramos por ahí tendrá presente estos detalles.


Concepciones erróneas y contraejemplos


Finalmente, y habiendo entendido lo que son los filtros IIR y FIR, quisiera plantear algunos contraejemplos frente a concepciones comúnmente erróneas. Por ejemplo, es común escuchar a la gente hablar acerca de fase mínima y fase lineal como conceptos opuestos; sin embargo, en realidad son simplemente características de las respuestas impulso. Un filtro de fase mínima es aquel en el cual la energía de la respuesta impulso se encuentra máximamente concentrada al comienzo de la misma. Esto en comparación con todas las otras respuestas impulso que puedan dar la misma respuesta de amplitud. Los filtros IIR suelen ser de mínima fase dado que se tienden a optimizar para ser extremadamente simples en su estructura; sin embargo hay evidentes casos en donde eso no pasa. El más sencillo es un filtro pasa-todo ya que el filtro pasa todo de mínima fase es, de hecho, una ganancia unitaria. El impulso perfecto es la respuesta impulso asociado a una respuesta de amplitud plana con la mayor concentración energética al principio de la respuesta impulso. Debido a esto, ¡TODOS los filtros IIR pasa-todo cuya fase no sea plana, NO son de mínima fase!.



De manera análoga, se tiende a pensar que los filtros FIR son de fase lineal; sin embargo, es increíblemente sencillo construir un filtro FIR que no sea de fase lineal o incluso que sea de fase mínima. Basta con medir la respuesta impulso de filtro IIR de fase mínima, obtener la respuesta impulso y usar los valores de la misma como los coeficientes de nuestro filtro FIR. Este proceso, de hecho, es un método de diseño de filtros digitales a partir de filtros analógicos llamado el método de la respuesta impulso invariante.


¿Un filtro IIR no puede ser de fase lineal? Este es uno que no suelo discutir mucho pues en el procesamiento en tiempo real es cierto. Para entender veamos qué hace que un filtro sea de fase lineal. Un filtro es de fase lineal si y solamente si, su respuesta impulso es simétrica. La intuición detrás de esto está en que la primera parte del filtro alterará la fase en una dirección la segunda en la dirección opuesta. Incluso podríamos tomar una canción entera, pegarla invertida al final de la misma y tendríamos un filtro FIR ¡de fase lineal! (Noten que ser de fase lineal no dice nada acerca de qué tan concentrada está la energía cerca del centro de nuestra respuesta impulso!). Lógicamente, esto no es posible con un filtro IIR ya que su respuesta impulso es infinita. Sin embargo, si no requerimos de procesar en tiempo real, nada nos impide procesar nuestra señal con un filtro IIR, voltear la señal en el tiempo y procesarla de nuevo. ¡Voilá! Un filtro IIR de fase lineal (y si éste fuera de mínima fase, no sólo sería de fase lineal sino que sería aquel filtro que más concentra la energía al rededor del centro de nuestra respuesta impulso!)


Dado que no solemos encontrar filtros FIR en ecualizadores analógicos, tendemos a pensar que estos sólo existen en el dominio digital. Ciertamente, dado que se basan en retrasos precisos de nuestra señal, sería un poco complicado, por ejemplo, usar 128 retrasos a base de cinta magnética para poder obtener un filtro FIR que en el dominio digital requiere a penas unos pocos Bytes. Pero no por eso quiere decir que sea imposible tener un filtro FIR en el dominio analógico. De hecho, ¡tenemos uno muy intuitivo rodeándonos todo el tiempo!. Cuando una onda acústica impacta sobre una superficie dura y llega a nuestros oídos unos pocos milisegundos después se genera un filtro de peine (o filtro de combinación). Este filtro de hecho es, simplemente, la suma de una señal con una versión retrasada de la misma… hummm… ¡eso suena mucho a lo que es un filtro FIR!


¿FIR vs IIR? Cuál es mejor. Cómo raro pretendo explicar algunas cosas pero también generar preguntas al respecto. En realidad, el hecho de que existan métodos de diseño de filtros FIR a partir de respuestas impulso de filtros IIR como el método de la respuesta impulso invariante evidencia que no son tan distintos como parece. Eso, sin mencionar, que existen métodos inversos como el método de Prony. ¡Este permite generar filtros IIR a partir de filtros FIR!. Definitivamente son bestias diferentes y cada uno tiene sus bondades; sin embargo, a veces saltamos apresuradamente a conclusiones y queremos creer que las bondades de un procesador en particular por encima de otro está en estas características cuando bien puede haber mil variable influyendo el resultado final. Cuando converso con personas que entienden muy bien de todos estos temas siempre terminamos llegando a las mismas dos conclusiones. Uno: Todo es un filtro y dos: En el DSP todo es igual a todo si se mira con la perspectiva adecuada. ¡Qué piensan de todo esto!

903 views

©2020 by JuanSaudio