Diseño de filtro FIR: ventana vs parques McClellan y mínimos cuadrados

21

¿Hay alguna ventaja de utilizar un enfoque de ventana sobre Parks-McClellan (abreviado aquí como PMcC) o algoritmos de mínimos cuadrados para el diseño de filtro FIR de un filtro de paso bajo? Asuma con el poder computacional actual que la complejidad de los algoritmos en sí no es un factor.

Esta pregunta no compara PMcC con mínimos cuadrados, sino específicamente si hay alguna razón para usar cualquier técnica de diseño FIR de ventana en lugar de esos algoritmos, o si las técnicas de ventanas para filtrar el diseño están obsoletas por esos algoritmos y relegadas a fines didácticos?

A continuación se muestra una comparación en la que había comparado una ventana de Hamming con mi enfoque de diseño favorito con Least-Squared, utilizando el mismo número de toques. Amplié la banda de paso en el enfoque de Mínimo Cuadrado para que coincida estrechamente con el de la Ventana de Hamming, y en este caso estaba bastante claro que el Mínimo Cuadrado superaría (ofreciendo significativamente más rechazo de banda de detención). No he hecho esto con todas las ventanas, lo que me lleva a la pregunta de si alguna vez podría superar PMcC y mínimos cuadrados, o si hay otras aplicaciones para un filtro de paso bajo FIR donde se preferiría un enfoque de ventanas.

ingrese la descripción de la imagen aquí

Dan Boschen
fuente
2
podría sugerir comparar Kaiser con ventana sinc a firpm()y a firls().
robert bristow-johnson

Respuestas:

16

Estoy de acuerdo en que el método de diseño del filtro de ventanas ya no es uno de los métodos de diseño más importantes, y de hecho podría ser el caso de que esté sobrerrepresentado en los libros de texto tradicionales, probablemente debido a razones históricas.

Sin embargo, creo que su uso puede justificarse en ciertas situaciones. No estoy de acuerdo en que la complejidad computacional ya no sea un problema. Esto depende de la plataforma. Sentados en nuestra computadora de escritorio y diseñando un filtro, no tenemos que preocuparnos por la complejidad. Sin embargo, en plataformas específicas y en situaciones donde el diseño debe hacerse en tiempo casi real, la complejidad computacional es un problema, y ​​se preferirá una técnica de diseño subóptima simple sobre una técnica óptima que sea mucho más compleja. Como ejemplo, una vez trabajé en un sistema para la formación de haces donde el filtro (formador de haces) necesitaría ser rediseñado sobre la marcha, por lo que la complejidad computacional fue realmente un problema.

También estoy convencido de que en muchas situaciones prácticas no necesitamos preocuparnos por la diferencia entre el diseño óptimo y el subóptimo. Esto se vuelve aún más cierto si necesitamos usar aritmética de punto fijo con coeficientes cuantificados y resultados cuantificados de operaciones aritméticas.

Otro problema es la estabilidad numérica de los métodos óptimos de diseño de filtros y sus implementaciones. Me he encontrado con varios casos en los que el algoritmo de Parks-McClellan (debería decir, la implementación que utilicé) simplemente no convergió. Esto sucederá si la especificación no tiene mucho sentido, pero también puede suceder con especificaciones totalmente razonables. Lo mismo es cierto para el método de diseño de mínimos cuadrados donde se necesita resolver un sistema de ecuaciones lineales, que puede convertirse en un problema mal condicionado. En estas circunstancias, el método de ventanas nunca te decepcionará.

Una observación sobre su comparación entre el método de ventana y el diseño de mínimos cuadrados: no creo que esta comparación muestre ninguna superioridad general del método de mínimos cuadrados sobre el método de ventanas. Primero, parece observar la atenuación de la banda de detención, que no es un objetivo de diseño para ninguno de los dos métodos. El método de ventanas no es óptimo en ningún sentido, y el diseño de mínimos cuadrados minimiza la energía de la banda de detención, y no le importa en absoluto el tamaño de la ondulación de la banda de detención. Lo que se puede ver es que el borde de la banda de paso del diseño de la ventana es más grande que el del diseño de mínimos cuadrados, mientras que el borde de la banda de detención es más pequeño. En consecuencia, el ancho de banda de transición del filtro diseñado por la ventana es menor, lo que dará como resultado ondas de banda de parada más altas. La diferencia en el ancho de banda de transición puede ser pequeña, pero las propiedades del filtro son muy sensibles a este parámetro. No hay duda de que el filtro de mínimos cuadrados supera al otro filtro cuando se trata de detener la energía de la banda, pero eso no es tan fácil de ver como el tamaño de ondulación. Y la pregunta sigue siendo si esa diferencia realmente haría una diferencia en una aplicación práctica.

Permítame mostrarle que a menudo se pueden hacer tales comparaciones para que se vean como uno quisiera que se vean. En la figura siguiente, comparo un filtro de paso bajo óptimo de mínimos cuadrados diseñado con la función Matlab / Octave firls.m(azul) con un filtro de paso bajo diseñado con el método de ventana usando una ventana de Kaiser (rojo).

ingrese la descripción de la imagen aquí

A partir de la figura, incluso se podría concluir que el filtro diseñado por ventanas es ligeramente mejor que el filtro óptimo de mínimos cuadrados. Por supuesto, esto no tiene sentido porque ni siquiera definimos "mejor", y el filtro de mínimos cuadrados debe tener un error de aproximación al cuadrado medio más pequeño. Sin embargo, no se ve eso directamente en la figura. De todos modos, esto es solo para apoyar mi afirmación de que uno debe ser muy cuidadoso y claro al hacer tales comparaciones.

En resumen, además de ser útil para aprender para estudiantes de DSP por razones puramente didácticas, creo que a pesar de los avances tecnológicos desde la década de 1970, el uso del método de ventanas puede justificarse en ciertos escenarios prácticos, y no creo que eso lo haga cambiar muy pronto

Matt L.
fuente
Buena respuesta Matt- Un par de aclaraciones / preguntas: Con respecto a la complejidad, ¿puedes dar un ejemplo real? Puedo ver que esto es un problema con la implementación, pero al encontrar los coeficientes no puedo pensar en una razón por la que haría el diseño en una plataforma inferior (de ahí mi pregunta). En cuanto a la comparación, los mínimos cuadrados son claramente mejores; para la misma onda y transición, obtienes una mejor atenuación de la banda. Había aumentado el ancho de la banda de paso para que coincida con los dos; el borde es un poco más grande ya que es donde dejé de coincidir, pero podría coincidir más cerca para concluir.
Dan Boschen
2
@DanBoschen: Por supuesto, en la mayoría de los casos el diseño se realiza sin conexión y la complejidad no es un problema. Sin embargo, me he encontrado con aplicaciones en las que los filtros tendrían que rediseñarse en tiempo casi real (que era una aplicación de formación de haces), por lo que allí tiene el problema de la complejidad.
Matt L.
1
Y en cuanto al ahorro real de número de tomas por un diseño óptimo en comparación con un diseño de ventana, los resultados que he visto a menudo son decepcionantes. A menudo, solo 1 o 2 toques, lo que para muchas implementaciones no haría mucha diferencia.
Matt L.
1
OK, para diseños fuera de línea y si la estabilidad numérica resulta no ser un problema (para ese diseño específico; en general sigue siendo un problema), la ventana no sería útil. Pero, en general, no siempre podemos confiar en los diseños fuera de línea y, lo que es más importante, no siempre podemos evitar problemas numéricos. Así que creo que la palabra "obsoleto" sigue siendo demasiado fuerte.
Matt L.
3
Muy bien dicho. Lo que debe recordar es que la ingeniería se trata de encontrar una implementación que sea lo suficientemente buena como para cumplir con sus requisitos. El método de la ventana es simple de implementar y siempre funciona. Otros métodos tienen implementaciones más complicadas y pueden tener casos en los que es difícil trabajar con ellos. He trabajado con varios sistemas que necesitan diseñar filtros sobre la marcha, y el método de ventana es la opción para esas situaciones.
Jason R
7

Los filtros Sinc con ventana se pueden generar de forma adaptativa sobre la marcha en procesadores apenas lo suficientemente potentes como para ejecutar el filtro FIR asociado. Los filtros Sinc con ventana se pueden generar en un tiempo limitado finito.

La generación de algunos filtros Sinc con ventanas simples se puede describir por completo (e inspeccionar en busca de malware, etc.) en unas pocas líneas de código , frente al uso ciego de una caja de herramientas opaca.

Se requieren menos antecedentes matemáticos necesarios para explicar un filtro Sinc con ventana, en comparación con el requerido para codificar un generador de filtro PMcC desde cero.

Las ondas iguales en la respuesta de frecuencia de un filtro PMcC pueden causar artefactos en el dominio del tiempo que son diferentes (y quizás menos deseables) que los artefactos producidos por un simple filtro de ventana.

hotpaw2
fuente
1
Sí, buen punto @ hotpaw2, la ondulación de la banda de paso conduce a la interferencia entre símbolos (ecos posteriores y principales). Gracias
Dan Boschen
2
Hablamos sobre Parks – McClellan antes y después de echo en comp.dsp en 2003 . Alexey Lukin publicó un ejemplo mínimo de MATLAB: f=[0 0.49 0.51 1]; a=[1 1 0 0]; b=remez(300,f,a)que también se ejecuta en Octave. Una explicación es que con filtros muy empinados, las ondas pueden ser lo suficientemente regulares como para parecerse a un coseno. El dominio de tiempo equivalente del coseno del dominio de frecuencia serían los dos ecos impulsivos.
Olli Niemitalo
6

Mostraré aquí un beneficio de un diseño de ventana y un truco para obtener el mismo beneficio de Parks – McClellan.

Para los filtros de ventanas de media banda, cuarto de banda, etc., se conservan los ceros del dominio del tiempo de la función de escala sinc, que es el filtro de paso bajo ideal prototípico. Los ceros terminan en los coeficientes, reduciendo el costo computacional de los filtros. Para un filtro de media banda, el diseño de ventana proporciona un filtro con cada coeficiente par 0, excepto el coeficiente medio (que también se considera par):

Sinc
Figura 1. La función de Sinc estirada horizontalmente por un factor de 2 es el filtro de paso bajo prototípico de media banda con una ganancia de 2, adecuado para el muestreo ascendente por un factor de 2.

Sin embargo, se puede engañar a Parks-McClellan / Remez para que brinde los mismos beneficios al diseñarlo usando un filtro con un número par de toques con solo una banda de paso de ganancia de unidad definida. Los coeficientes obtenidos se usan como coeficientes impares de un filtro más largo. El coeficiente medio del filtro más largo se establece en 1 y los otros coeficientes pares en 0. Este filtro tiene una ganancia de 2 en la banda de paso y ondulación simétrica en las bandas de paso y parada. En Python:

import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
c0 = signal.remez(14, [0, 3500.0/8000], [1])
c = np.zeros(c0.size*2-1)
c[0::2] = c0
c[c0.size-1] = 1
freq, response = signal.freqz(c)
plt.semilogy(freq/(2*np.pi), np.abs(response))
plt.show()
plt.plot(range(-c0.size+1, c0.size, 1), c, 'x')
plt.grid(True)
plt.show()

Figura 2.
Figura 2. Coeficientes del filtro de media banda diseñado indirectamente usando Python scipy.signal.remez.

Figura 3.
Figura 3. Gráfico de respuesta de frecuencia de magnitud del filtro de media banda diseñado indirectamente scipy.signal.remez.

Olli Niemitalo
fuente