Suponga el siguiente filtro IIR de primer orden:
¿Cómo puedo elegir el parámetro st? El IIR se aproxima lo mejor posible al FIR, que es la media aritmética de las últimas muestras:
Donde , lo que significa que la entrada para el IIR podría ser más larga que k y, sin embargo, me gustaría tener la mejor aproximación de la media de las últimas k entradas.
Sé que el IIR tiene una respuesta de impulso infinita, por lo tanto, estoy buscando la mejor aproximación. Estaría contento con la solución analítica, ya sea para la función de costo o .
¿Cómo se pueden resolver estos problemas de optimización con solo IIR de primer orden?
Gracias.
Respuestas:
No hay una solución analítica para que sea un escalar (creo). Aquí hay un script que te da para una dada . Si lo necesita en línea, puede crear un LUT. El script encuentra la solución que minimizaα Kα α K
donde es la respuesta de frecuencia FIR y es la respuesta de frecuencia IIR.H 2H1 H2
No especificó ningún rango para K. ¡Pero solo quiero dejar en claro que el siguiente sistema es equivalente a su filtro medio y tiene la misma complejidad computacional y su IIR de primer orden!
fuente
Hay una buena discusión sobre este problema en el procesamiento de señal integrado con la arquitectura de micro señal , aproximadamente entre las páginas 63 y 69 . En la página 63 , incluye una derivación del filtro de promedio móvil recursivo exacto (que niaren dio en su respuesta ),
Por conveniencia con respecto a la siguiente discusión, corresponde a la siguiente ecuación de diferencia:
La aproximación que coloca el filtro en la forma que especificó requiere suponer que , porque (y cito de la página 68 ) " es el promedio de muestras ". Esa aproximación nos permite simplificar la ecuación de diferencia anterior de la siguiente manera: y n - 1 x nxn−N≈yn−1 yn−1 xn
Configurando , llegamos a su forma original, , que muestra que el coeficiente que desea ( con respecto a esta aproximación) es exactamente (donde es el número de muestras). yn=αxn+(1-α)yn-11α=1N yn=αxn+(1−α)yn−1 N1N N
¿Es esta aproximación la "mejor" en algún aspecto? Ciertamente es elegante. Así es como se compara la respuesta de magnitud [a 44,1 kHz] para N = 3, y cuando N aumenta a 10 (aproximación en azul):
Como sugiere la respuesta de Peter , aproximar un filtro FIR con un filtro recursivo puede ser problemático bajo una norma de mínimos cuadrados. Se puede encontrar una extensa discusión sobre cómo resolver este problema en general en la tesis de JOS, Técnicas para el diseño de filtros digitales e identificación del sistema con aplicación al violín . Él aboga por el uso de la Norma Hankel, pero en los casos en que la respuesta de fase no importa, también cubre el Método de Kopec, que podría funcionar bien en este caso (y utiliza una norma ). Aquí se puede encontrar una visión general de las técnicas de la tesis . Pueden producir otras aproximaciones interesantes.L2
fuente
OK, tratemos de obtener lo mejor: tan que el coeficiente de es .
La mejor aproximación al cuadrado medio minimizará:
El siguiente paso es tomar derivados y equiparar a cero.
Al observar una gráfica de la derivada para y de 0 a 1, parece que el problema (como lo configuré) está mal planteado, porque la mejor respuesta es .J K=1000 α α=0
Creo que hay un error aquí. La forma en que debería ser según mis cálculos es:
Simplificándolo según los rendimientos de Mathematica :
El uso del siguiente código en MATLAB produce algo equivalente aunque diferente:
De todos modos, esas funciones tienen un mínimo.
Supongamos que realmente solo nos importa la aproximación sobre el soporte (longitud) del filtro FIR. En ese caso, el problema de optimización es solo:
El trazado de para varios valores de versus da como resultado la fecha en los gráficos y la tabla a continuación.J2(α) K α
Las líneas discontinuas rojas son y las líneas verdes son , el valor de que minimiza (elegido de ).1/K αmin α J2(α) alpha=[0:.01:1]/3;
fuente
Basado en pruebas experimentales con un
k
rango (2 a 100), el mejor ajuste (suma de error al cuadrado) da una relación dealfa = 1/k^0.865
ser elk
número de muestras para el filtro MovAvgfuente
Me topé con esta vieja pregunta y me gustaría compartir mi solución. Como se menciona en otras respuestas, no existe una solución analítica, pero la función que se debe minimizar se comporta muy bien y el valor óptimo de se puede encontrar fácilmente con unas pocas iteraciones de Newton. También hay una fórmula para verificar la optimización del resultado.α
La respuesta al impulso del filtro de media móvil FIR de longitud viene dada porN
donde es la función de paso unitario. El filtro de primer orden IIRu[n]
tiene la respuesta impulsiva
El objetivo ahora es minimizar el error al cuadrado
Usando y , el error se puede escribir como(1) (3)
Esta expresión es muy similar a la dada en esta respuesta , pero no es idéntica. La restricción en en asegura que la suma infinita converja, y es idéntica a la condición de estabilidad para el filtro IIR dada por .α (5) (2)
Establecer la derivada de a cero da como resultado(5)
Tenga en cuenta que el óptimo debe estar en el intervalo porque los valores mayores de dan como resultado una respuesta de impulso alterna , que no puede aproximarse a la respuesta de impulso constante del filtro de promedio móvil FIR.α (0,1] α (3)
Tomando la raíz cuadrada de e introduciendo , obtenemos(6) β=1−α
Esta ecuación no se puede resolver analíticamente para , pero se puede resolver para :Nβ N
La ecuación se puede usar para verificar una solución numérica de ; debe devolver el valor especificado de .( 7 ) N(8) (7) N
La ecuación se puede resolver con unas pocas líneas de código (Matlab / Octave):(7)
A continuación se muestra una tabla con los valores óptimos de para un rango de longitudes de filtro :Nα N
fuente