Principios básicos del diseño del filtro digital (IIR / FIR)


15

Aunque tengo una sólida experiencia en el diseño de motores de audio y demás, soy bastante nuevo en el ámbito del diseño de filtros digitales, particularmente los filtros IIR y FIR. En otras palabras, estoy tratando de aprender todo lo que pueda sobre cómo diseñar filtros y derivar sus ecuaciones de diferencia. Estoy empezando por lo básico, así que tengan paciencia conmigo, como dije, estoy tratando de aprender.

Aquí está mi pregunta:

Digamos que quiero diseñar un filtro de paso bajo con un límite particular, digamos 300 Hz. ¿Cuál sería la mejor manera de derivar matemáticamente la función de transferencia y luego derivar la ecuación de diferencia particular para implementar el filtro en Direct Form I y Direct Form II (o solo DF-1 por ahora ...)?

Tengo cierta comprensión de las funciones de transferencia y cómo se relacionan con las ecuaciones de diferencia de un excelente material en la web, desafortunadamente algunas de ellas suponen un buen conocimiento previo, por lo que es más confuso que útil en mi búsqueda. Así que supongo que necesito un ejemplo más paso a paso que me ayudará a conectar los puntos.

Básicamente, estoy buscando ayuda con un desglose del proceso, comenzando por elegir la frecuencia de corte hasta derivar la ecuación de diferencia.

Cualquier ayuda será muy apreciada. Estoy familiarizado con muchos de los conceptos: respuesta de impulso, DFT, matemática detrás de esto, creo que necesito más ayuda con el concepto de la transformación z y el uso de polo / cero para diseñar la función de transferencia del filtro y luego ¿Cómo funciona la frecuencia de corte? juega en todo esto para finalmente derivar la ecuación de diferencia.

Como tiendo a aprender mejor del ejemplo, pensé en preguntar aquí. Muchas gracias a cualquiera que encuentre el tiempo para ayudarme.


2
Existen muchos métodos de diseño de filtros. Aquí hay algunos términos para comenzar: el método de diseño de la ventana, el diseño del filtro de mínimos cuadrados y el diseño del filtro equiripple (generalmente usando el algoritmo de Parks-McClellan). Estos se limitan principalmente a los diseños de filtros FIR. Una forma común de diseñar filtros IIR es mapeando un prototipo analógico (como un filtro Butterworth) a una aproximación de filtro digital correspondiente. Esto podría hacerse utilizando la transformación bilineal o los métodos de invariancia de impulso, por ejemplo.
Jason R

Respuestas:


20

El diseño del filtro digital es un tema muy amplio y maduro y, como ha mencionado en su pregunta, hay mucho material disponible. Lo que quiero probar aquí es comenzar y hacer que el material existente sea más accesible. En lugar de filtros digitales, en realidad debería estar hablando de filtros de tiempo discreto porque no consideraré aquí la cuantificación de coeficientes y señales. Ya conoce los filtros FIR y IIR, y también conoce algunas estructuras de filtro como DF I y II. Sin embargo, permítanme comenzar con algunos conceptos básicos:

La siguiente ecuación de diferencia puede describir un filtro no recursivo lineal invariante en el tiempo (LTI)

(1)y(norte)=h0 0X(norte)+h1X(norte-1)+...+hnorte-1X(norte-norte+1)=k=0 0norte-1hkX(norte-k)

donde es la secuencia de salida, x ( n ) es la secuencia de entrada, n es el índice de tiempo, h k son los coeficientes del filtro y N es la longitud del filtro (el número de tomas). Las tomas de filtro h k también son la respuesta al impulso del filtro porque si la señal de entrada es un impulso, es decir, x ( n ) = δ ( n ) , entonces y ( n ) = h ny(norte)X(norte)nortehknortehkX(norte)=δ(norte)y(norte)=hnorte(si la memoria del filtro se ha inicializado con ceros). La ecuación (1) describe un sistema lineal de respuesta al impulso finito (FIR) invariante en el tiempo. La suma en el lado derecho de (1) es una suma de convolución, es decir, la señal de salida se obtiene convolucionando la señal de entrada con la respuesta al impulso. Esto siempre es cierto, pero para los filtros IIR no podemos calcular explícitamente la suma de convolución porque la respuesta al impulso es infinitamente larga, es decir, hay infinitos coeficientes hk. Una ventaja importante de los filtros FIR es que siempre son estables, es decir, para una secuencia de entrada limitada, la secuencia de salida siempre está limitada. Otra ventaja es que los filtros FIR siempre pueden realizarse con una fase exactamente lineal, es decir, no agregarán ninguna distorsión de fase aparte de un retraso puro. Además, el problema de diseño suele ser más fácil, como veremos más adelante.

La siguiente ecuación de diferencia describe un filtro LTI recursivo:

(2)y(norte)=si0 0X(norte)+si1X(norte-1)+...+siMETROX(norte-METRO)--un1y(norte-1)-...-unnortey(norte-norte)

La ecuación (2) muestra que la salida no solo se compone de muestras de entrada ponderadas y retrasadas, sino también de muestras de salida pasadas ponderadas. En general, la respuesta al impulso de dicho sistema es infinitamente larga, es decir, el sistema correspondiente es un sistema IIR. Sin embargo, hay casos especiales de filtros recursivos con una respuesta de impulso finita. Tenga en cuenta que la respuesta al impulso ya no está dada por los coeficientes o a k como en el caso de los filtros FIR. Una ventaja de los filtros IIR es que los filtros empinados con una alta atenuación de la banda de detención pueden realizarse con muchos menos coeficientes (y retrasos) que en el caso FIR, es decir, son computacionalmente más eficientes. Sin embargo, hay que tener cuidado con la elección de los coeficientes a ksikunkunk porque el filtro IIR puede ser inestable, es decir, su secuencia de salida puede ser ilimitada, incluso con una secuencia de entrada limitada.

Los filtros se pueden diseñar de acuerdo con las especificaciones en el dominio del tiempo (muestra) o en el dominio de la frecuencia, o en ambos. Como ha mencionado una frecuencia de corte en su pregunta, supongo que está más interesado en las especificaciones en el dominio de la frecuencia. En este caso, debe observar las respuestas de frecuencia de los sistemas FIR y IIR. La respuesta de frecuencia de un sistema es la transformada de Fourier de su respuesta de impulso, suponiendo que existe (que es el caso de los sistemas estables). La respuesta de frecuencia de un filtro FIR es

(3)H(mijθ)=k=0 0norte-1hkmi-jkθ

θ

θ=2πFFs

FFs

(4)H(mijθ)=k=0 0METROsikmi-jθ1+k=1norteunkmi-jθ

unk=0 0k=1,...,norte

Veamos ahora rápidamente los métodos de diseño de filtros. Para los filtros FIR, puede tomar una transformada inversa de Fourier de la respuesta de frecuencia deseada para obtener la respuesta de impulso del filtro, que corresponde directamente a los coeficientes del filtro. Dado que aproxima la respuesta deseada mediante una respuesta de impulso de longitud finita, debe aplicar una ventana suave a la respuesta de impulso obtenida para minimizar las oscilaciones en la respuesta de frecuencia real debido al fenómeno de Gibbs. Este método se llama método de muestreo de frecuencia.

Para filtros estándar simples como los filtros ideales de paso bajo, paso alto, paso de banda o de parada de banda (y algunos otros), incluso puede calcular analíticamente la respuesta de impulso exacta al tomar la transformada inversa de Fourier de la respuesta ideal deseada:

hk=12π-ππH(mijθ)mijkθreθ

Esta integral es fácil de evaluar para las respuestas deseadas constantes por partes, como es el caso de los filtros selectivos de frecuencia ideales. Esto le dará una respuesta de impulso no causal infinitamente larga, que debe ser ventana y desplazada para que sea finita y causal. Este método se conoce como diseño de ventana.

Por supuesto, hay muchos otros métodos de diseño de filtros FIR. Un método numérico importante es el famoso algoritmo de intercambio de Parks-McClellan que diseña filtros óptimos con ondas de paso constante y ondas de parada. Es un método de aproximación numérica y hay muchas implementaciones de software disponibles, por ejemplo, en Matlab y Octave.

ssz

Por supuesto, existen muchos métodos más interesantes y útiles, dependiendo del tipo de especificaciones que tenga, pero espero que esto lo ayude a comenzar y haga que cualquier material que encuentre sea más comprensible. Un libro muy bueno (y gratuito) que cubre algunos métodos básicos de diseño de filtros (y muchos más) es Intoduction to Signal Processing de Orfanidis. Puede encontrar varios ejemplos de diseño allí. Otro gran libro clásico es Digital Filter Design de Parks and Burrus.


Wow, Matt, muchas gracias por la respuesta detallada y reflexiva. Seguramente profundizaré en ello y realmente apreciaré tu tiempo. ¡Gracias!
bitwise

¿Hay algún buen libro de texto para el diseño del filtro wavelet? Tengo curiosidad sobre este tema: dsp.stackexchange.com/questions/29090/… . ¡Gracias!
LCFactorization

Una muy buena introducción y motiva a hacer algo en el campo del procesamiento de señales
jomegaA
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.