Una de las formas estándar de implementar un filtro de Butterworth es con una cascada de secciones de segundo orden, cada una correspondiente a un par de polos complejos conjugados. Para un filtro de cuarto orden, por ejemplo, habría dos secciones de segundo orden. Si consideramos cómo cambian las ubicaciones de los polos para un filtro de paso bajo en el plano z a medida que el corte está diseñado para cerca de 0hz a cerca de Nyquist, el camino "barrido" por cada par de polos corresponde a un par de arcos dentro del círculo unitario , como se ilustra en la siguiente figura [para filtros de cuarto orden]:
Dado el tiempo que llevan estos filtros, y dado el hecho de que estos "arcos" corresponden a líneas rectas en el plano s, es lógico que alguien haya desarrollado una forma de implementación con un único parámetro que pueda barrer los polos a lo largo de los arcos en "tiempo de ejecución" [en oposición al "tiempo de diseño"]. Sin embargo, todavía no me he encontrado con algo así.
Es relativamente sencillo encontrar varias formas de hacer esto, especialmente dentro de segmentos del rango, y con la voluntad de arrojarle un poco de cálculo adicional. Lo que me pregunto es lo siguiente:
¿Existe alguna forma estándar de implementar un filtro Butterworth [digital] sintonizable de un orden dado que 1) tenga propiedades óptimas (por ejemplo, eficiencia, robustez) y 2) cubra todo el rango?
¿O es realmente un problema tan fácil que nadie se molesta en hablarlo? Si ese es el caso, parece que aparecería en los programas de diseño de filtros junto a las opciones para diseños "estáticos".
Encontré esto: un filtro Butterworth de múltiples propósitos con frecuencia de corte variable , pero al principio Google no parece haber mucha información sobre lo que contiene.
Actualización (re: respuestas)
Solo para ser un poco más claro:
- Estoy buscando un "meta-diseño" con un parámetro (digamos de [0,1]) que ajustará automáticamente el corte de DC a Nyquist (mientras mantiene la ganancia normalizada) para usar en un sistema que varía con el tiempo. Algo así como este resonador de dos polos , excepto con las limitaciones de Butterworth. La idea es que calcular el parámetro sería más eficiente que seguir el típico procedimiento de diseño fuera de línea en tiempo de ejecución.
- Ni siquiera estoy buscando cómo diseñar un "meta-filtro" (es decir, hacer los cálculos con variables en lugar de números), me pregunto si hay opciones para formularios de implementación estándar [no obvio], porque, digamos, el enfoque directo que corresponde al caso estático termina teniendo problemas numéricos en el caso variable en el tiempo.
- Tal vez no haya problemas, y el enfoque directo es lo que se usa en la práctica. Eso seria genial. Mi preocupación es que no he visto este tema mencionado explícitamente en ninguna de las fuentes que he consultado, pero tal vez me haya perdido algo realmente obvio, así que lo pregunto.
- En el proceso de agregar más detalles aquí, me encontré con un tratamiento general de estructuras biquad paramétricas, que es casi lo que estoy buscando (y tiene algunas referencias agradables).
Actualización 2
Estoy buscando respuestas como la que puse en mi segundo comentario a Jason R, de la siguiente manera:
"Oh, sí, quieres usar la parametrización III-2b de la tesis de tal y tal, en forma de celosía de estado intermitente porque resuelve tal y tal caso de borde mientras usa el número mínimo de multiplicaciones".
Tal vez no exista nada de eso, pero mi pregunta es si existe, y si es así, ¿qué es o dónde puedo encontrarlo?
Bote
Basado en una referencia a la "forma canónica del observador" dada por Tim Wescott en el hilo de comp.dsp en la respuesta de Jason R , decidí asumir que podría tener que comenzar a investigar en la literatura de sistemas de control, así que intenté buscar "espacio de estado" de butterworth , y resultó el siguiente, muy genial, tratamiento de diseño / implementación, no solo paramétrico de Butterworth, sino también de Chebyshev y filtros elípticos:
Sophocles J. Orfanidis, "Diseño de ecualizador paramétrico digital de alto orden", J. Audio Eng. Soc., Vol. 53, págs. 1026-1046, noviembre de 2005.
- Documento: http://www.ece.rutgers.edu/~orfanidi/ece348/hpeq.pdf
- Matlab Toolbox: http://eceweb1.rutgers.edu/~orfanidi/hpeq/
Me llevará un poco de tiempo profundizar, pero según lo que he leído hasta ahora, me sorprendería mucho si no es lo que estoy buscando. Le doy este a Jason R por la referencia comp.dsp que me llevó al artículo de Orfanidis. Su respuesta también es una buena descripción práctica del diseño de filtros Butterworth.
Sí, hay formularios de implementación estándar para Butterworth y casi cualquier otra respuesta de filtro. Todos están completamente implementados en mi biblioteca de filtros de código abierto IIR. Aquí hay un fragmento de código que produce los pares polo / cero para un filtro de grado arbitrario de Butterworth:
Como puede ver, la posición de los polos se calcula subdividiendo el plano s en segmentos iguales de "pares".
Se proporciona un código adecuado para todos los tipos comunes de respuestas de filtro: Chebyshev, Elliptic, Legendre, incluidas las versiones de estante de cada uno.
https://github.com/vinniefalco/DSPFiltersDemo.git
https://github.com/vinniefalco/DSPFilters.git
fuente