Estoy teniendo dificultades para entender lo que "infinito" en IIR significa en la práctica En teoría la respuesta de impulso se utiliza para la retroalimentación Si esta retroalimentación nunca termina, ¿cómo se genera la salida?
Respuestas
¿Demasiados anuncios?Para responder a esa pregunta hay que saber qué significan "Impulso" y "Respuesta"...
Un "impulso" es un simple pulso. Digitalmente sería una muestra con un valor máximo, mientras que todas las demás muestras antes y después serían cero. Si lo escucharas, oirías algo parecido a un pop o un petardo.
La "Respuesta" es la salida de un filtro (o algo más) se da el impulso.
Por ejemplo, puedes escuchar la "respuesta al impulso de una habitación" entrando en ella, dando una simple palmada y escuchando el eco. Se necesita algo de práctica para conseguir que la palmada sea lo más "nítida" posible. La respuesta al impulso de un filtro se obtiene de la misma manera, pero en lugar de una palmada se utiliza un simple pulso y en lugar de una sala se tiene un filtro.
Si observas la respuesta al impulso de un filtro, o de una sala, verás que la salida se menea durante un tiempo después del impulso (y a veces también se menea antes). En la sala se oye este meneo como el eco. En un filtro, este contoneo está directamente relacionado con la respuesta de frecuencia y fase del filtro. En una sala, la cantidad de tiempo que se oye el eco se denomina "tiempo de reverberación"; no existe el término correspondiente para un filtro, pero forma parte de la respuesta al impulso.
Ahora bien, un filtro FIR (Finite Impulse Response) es finito porque el tiempo de respuesta al impulso está limitado por las matemáticas. Es matemáticamente imposible que el tiempo de respuesta al impulso se extienda más allá del número de tomas del filtro, por lo que es finito .
Un filtro IIR, en cambio, no tiene esta limitación matemática en el tiempo de respuesta al impulso. Si se le da una precisión matemática infinita, un filtro IIR puede agitar las salidas para siempre. Por supuesto, en un sentido práctico nunca es eterno, ya que en algún momento el contoneo se hace más pequeño que la precisión de la matemática utilizada y así desaparece.
La respuesta al impulso es la firma del filtro. En el caso de un filtro FIR, la respuesta al impulso ofrece una imagen directa de los coeficientes del filtro. El impulso es una sola muestra con la máxima amplitud, todas las muestras antes y después son cero. (Es el equivalente digital de un impulso de Dirac).
En el momento del impulso su valor se multiplica por \$b_0\$ (ver diagrama inferior). Las otras muestras son cero, por lo que la salida \$y\$ es igual a \$b_0\$ (Estoy suponiendo un valor máximo para el pulso de 1). Una muestra más tarde el pulso se ha movido un \$z^{-1}\$ y se multiplica por \$b_1\$ . De nuevo, todos los demás valores son cero, por lo que la salida es \$b_1\$ . Y así sucesivamente. Mientras el pulso se desplaza a través del filtro se obtienen los valores sucesivos de \$b_i\$ en la salida. Después de N muestras, el pulso se desplaza fuera del filtro y la salida vuelve a ser cero.
Para un filtro IIR no es tan obvio derivar los coeficientes del filtro a partir de la respuesta al impulso.
IIR
En un filtro IIR (parte de) la señal procesada se devuelve a la entrada. Esto significa que siempre habrá algún residuo de la señal en bucle. Sin embargo, la mayoría de las veces esta parte de la señal será cada vez más pequeña y terminará siendo cero, pero en teoría nunca desaparece por completo. El siguiente diagrama de bloques muestra un filtro bicadena, una implementación muy utilizada de un filtro IIR. La rama izquierda toma valores de entrada (retardados), la rama derecha trabaja con valores de salida (retardados). (A \$z^{-1}\$ representa un retraso de 1 muestra. Los biquads suelen estar en cascada.
FIR
En cambio, los filtros FIR tienen un recorrido lineal desde la entrada hasta la salida. Después de N muestras, la señal de entrada (como un pulso de Dirac) se habrá desplazado hacia fuera y ahí se acaba todo.
Los filtros FIR son inherentemente estables, mientras que los filtros IIR no lo son necesariamente.
Existen dos grandes clases de filtros digitales, los de respuesta implusa infinita (IIR) y los de respuesta al impulso finita (FIR). De nuevo, los filtros IIR se basan en ecuaciones y los FIR en tablas.
Los filtros IIR son más parecidos a los filtros analógicos del mundo real. Por ejemplo, considere un simple decaimiento exponencial como el que obtendría de un filtro analógico de paso bajo R-C. La respuesta de salida a una entrada escalonada es una exponencial que se acerca cada vez más a la entrada. Tenga en cuenta que esta exponencial nunca llega a la salida, sólo se acerca lo suficiente como para que no nos importe o no podamos medir el error. En este sentido, este filtro es inifinito. Un filtro IIR tiene las mismas características.
El filtro IIR unipolar de paso bajo, muy común, puede expresarse como
FILT <-- FILT + FF(NEW - FILT)
Esto significa que en cada iteración la salida se desplaza una fracción fija (FF, la "fracción de filtro") de la distancia a la entrada. Esto es fácil de visualizar cuando FF = 1/2. Si todo es 0 y la entrada de repente pasa a 1 y se queda ahí (un paso unitario), entonces la salida será 1/2, 3/4, 7/8, 15/16, etc. Esta es una serie infinita. Eventualmente el valor se acercará tanto a 1 que se expresará como 1 ya que los valores digitales en el ordenador no tienen una precisión infinita.
Los filtros FIR funcionan según un principio totalmente diferente. Se guarda un fragmento reciente de la señal de entrada, y cada uno de los valores guardados se multiplica por un coeficiente diferente, y luego se suman todos los resultados para hacer la salida del filtro para esa iteración. En la siguiente iteración se descarta el valor guardado más antiguo, los demás se desplazan una ranura más antigua y la nueva entrada se coloca en la ranura vacía. El nuevo fragmento guardado se multiplica entonces por los coeficientes, etc. Este proceso se conoce como "convolución", y la tabla de coeficientes suele denominarse núcleo del filtro. Con este tipo de filtro se pueden hacer algunas cosas útiles y extravagantes si se es creativo con los coeficientes. Eso es un tema completo que no voy a tratar ahora. Sin embargo, como un fragmento finito de la entrada se almacena en la memoria, cualquier parte de la señal de entrada sólo puede afectar a la salida durante un tiempo finito. Una vez que una muestra de entrada se desplaza al final del fragmento almacenado, desaparece y ya no tiene ningún efecto sobre la salida.
Hay libros enteros escritos sobre este tema y se pueden dedicar varios semestres de cursos universitarios a profundizar en ello. Espero que mi resumen de 30 segundos desmitifique esto lo suficiente como para responder a su pregunta.
Un punto que aún no se ha mencionado es que los filtros IIR pueden subdividirse en dos estilos: aquellos en los que las etapas pueden clasificarse, de manera que cada etapa depende totalmente de su(s) propio(s) valor(es) anterior(es) y de los de las etapas anteriores, y aquellos en los que las etapas no pueden clasificarse (porque dos o más etapas dependen unas de otras). Es posible que las etapas de un filtro FIR hagan referencia a las salidas anteriores de otras etapas, siempre que puedan clasificarse como en el estilo anterior de IIR, y que ninguna etapa haga referencia a su propia salida anterior.
Si las etapas de un filtro IIR se pueden clasificar, y si la magnitud total de los coeficientes de auto-retroalimentación para una etapa dada es menor que uno, se garantiza que el filtro IIR es estable. Si, por ejemplo, una etapa incluye cierta cantidad de señal de las etapas anteriores, más la mitad del valor anterior de esa etapa y 1/4 del valor anterior, menos 1/8 del valor anterior, la magnitud total de la autorretroalimentación será de 7/8, por lo que, en ausencia de más aportaciones de las etapas inferiores, la magnitud de la contribución de la autorretroalimentación disminuiría un 12,5% en cada iteración.
Un FIR, hace sus cálculos en un número finito de elementos, digamos 32 o 12 o algún número, pero eso es lo que hace la matemática, tomar un número finito de elementos y realizar el filtro sólo en esos.
Un IIR, hace sus cálculos en todas las muestras que le das. Si lo alimentas con 10 muestras y lo detienes, entonces funciona con 10 muestras, si lo alimentas con 1.000.000.000 de muestras, entonces las matemáticas operan con 1.000.000.000 de muestras. Y si dejas la cosa funcionando indefinidamente, acercándose al infinito (déjala funcionar para siempre) entonces el número de elementos igualmente es indefinido acercándose al infinito. Como la palabra finito se aplica claramente al otro modelo, y el modelo IIR pretende no tener un número finito de muestras, la palabra infinito como opuesta a finito simplemente suena mejor que indefinido u otra palabra similar.