¿Qué tipo de filtro es ese? ¿Es IIR?

9

Estoy tratando de responder la siguiente pregunta:

Es el sistema descrito por la ecuación:

y[n]=0.5y[n1]+x[n]0.5x[n1]

un filtro IIR ? Mi respuesta es si.

Gracias

Yasmin negro
fuente
1
hay una clase de filtros FIR llamados filtros "IIR truncados" (TIIR). puedes googlear eso y encontrarás cosas de Julius Smith y Avery Wang. otro ejemplo de filtros TIIR es el filtro de Suma móvil o Promedio móvil o el filtro CIC (todos los nombres son bastante diferentes para la misma cosa). Lo que hace que este filtro recursivo sea un FIR es la cancelación del polo cero. tal como se implementó, hay polos internos y si fueran inestables, el filtro podría explotar dentro, pero no lo vería en la salida hasta que se superaran los límites numéricos.
Robert Bristow-Johnson
1
¿Cuáles son los límites numéricos?
Black Yasmin
depende del tipo numérico (flotante o fijo) y el ancho de la palabra. Estas cosas se pueden buscar. . (por ejemplo, para IEEE-754 flotadores para fijo, que depende de la cantidad de bits, , se izquierda del punto binario; aproximadamente ± 2 n I - 1 .nI±2nI1
Robert Bristow-Johnson
gracias de nuevo señores por toda la ayuda! ayuda mucho Me alegro de haber encontrado este sitio web
Black Yasmin
2
@AnthonyParks: Usted dice : " ¿por qué la gente hace esto complicado? Esto es claramente un IIR porque el primer término del filtro tiene una porción de retroalimentación ". Yo digo : " ¿por qué la gente no se molesta en comprender los conceptos básicos de DSP "? El filtro IIR siempre implica la forma recursiva, pero FIR no necesariamente significa que el filtro no sea recursivo. Esa es la única respuesta correcta y estás confundiendo los conceptos aquí. Si esa fuera la pregunta del examen, fallaría al decir que es un IIR. Oppenheim explica este tema en su libro sobre DSP.
jojek

Respuestas:

18

Este es el filtro FIR , aunque parece un IIR. Si calcula los coeficientes, obtiene una respuesta de impulso finita:

h=[1]

Esto sucede debido a la cancelación del polo cero:

Y(z)0.5Y(z)z1=X(z)0.5X(z)z1

H(z)=Y(z)X(z)=10.5z110.5z1=1

Sí, puede ser complicado. Ver los coeficientes en LCCDE (Ecuación de diferencia de coeficientes constantes lineales) no significa necesariamente que sea un filtro IIR. Podría ser solo un filtro FIR recursivo.y[nk]

jojek
fuente
1
gracias por el reconocimiento! Fui engañado para decir IIR, sin siquiera mirar cuidadosamente los coeficientes ... Borré mi respuesta.
Fat32
Aún así, si implementa las ecuaciones como se indicó originalmente, no se comportará exactamente como H (z) = 1 debido a los efectos de longitud de palabra finita (a pesar de que la cancelación del polo cero es exacta en este caso).
Oscar
Eso es cierto @Oscar, pero estos son problemas numéricos que no tienen nada que ver con que el filtro sea F / IIR.
jojek
1
@jojek: por supuesto, tienes toda la razón. Sin embargo, el uso de filtros FIR recursivos causa bastantes problemas si desconoce estas cosas (que muchos investigadores, incluso de "alta calidad", son). De ahí mi comentario. Idealmente, también debería haber una discusión del algoritmo frente a la función de transferencia.
Oscar
jojek estoy leyendo tu respuesta de esta pregunta que respondiste pero no puedo comentar. dsp.stackexchange.com/questions/17605/… ¿ puedo usar una ventana diferente?
Black Yasmin
14

La respuesta de Jojek es, por supuesto, correcta. Me gustaría agregar más información porque con demasiada frecuencia he visto confundidos los términos "IIR" y "recursivo". Las siguientes implicaciones siempre son válidas:

IIRrecursivenon-recursiveFIR

es decir, cada filtro IIR (es decir, un filtro de tiempo discreto que tiene una respuesta de impulso infinitamente larga) debe implementarse recursivamente (a menos que tenga memoria infinita disponible), y cada sistema LTI no recursivo tiene una respuesta de impulso finita (nuevamente, a menos que tenga infinito memoria).

Sin embargo, lo contrario generalmente no es cierto. Un filtro recursivo puede tener una respuesta de impulso finita, como es el caso del ejemplo en la pregunta. Otro ejemplo famoso es un filtro de media móvil. Esta es una implementación no recursiva de un promedio móvil (necesariamente FIR):

y[n]=1Nk=nN+1nx[k]

y[n]=y[n1]+1N(x[n]x[nN])
Matt L.
fuente
1
Conciso y preciso como siempre, +1;) Gracias por mencionar el caso de MA.
jojek
1
@jojek: sí, creo que es un clásico que todos deberían saber.
Matt L.
Y mientras pensaba principalmente en el ruido de redondeo en el comentario a la respuesta de jojek, para MA, el desbordamiento será un problema potencial que debe considerarse cuidadosamente. Sin embargo, se resuelve fácilmente con la aritmética del complemento a dos y la longitud de palabra suficiente.
Oscar
1
@Oscar: Bueno, después de hacer un análisis muy simple con precisión de doble coma flotante, obtuve un error de 8.881784197001252e-16 . Esto es después de procesar el equivalente de 1 año de audio a una frecuencia de muestreo de 44,1 kHz. Los datos de entrada son un ruido gaussiano con distribución normalizada. ¡Aquí está el código para reproducir el resultado ! (puede demorar 3 días en ejecutarse). Siempre que esto sea correcto, creo que no hay nada de qué preocuparse.
jojek
1
@jojek: tres cosas. 1) Me refería al filtro de promedio móvil de la respuesta, no al de la pregunta original. 2) Sí, eso está bien para el audio (pero no es exacto, así que no hay razón para poner "no" en negrita), pero prefiero que el procesamiento de mi señal de seguridad crítica funcione independientemente de la señal de entrada que tiene propiedades sintéticas. 3) Lo interesante es que el filtro con el que simuló no tendrá los problemas que describí (ya que el polo está dentro del círculo de la unidad, no en él), pero siempre tendrá errores de redondeo independientes de la representación (lo que se puede evitar en el caso de la media móvil).
Oscar