Dado que la discusión en las respuestas y comentarios existentes se ha centrado principalmente en lo que realmente son los filtros Savitzky-Golay (lo cual fue muy útil), intentaré agregar a las respuestas existentes proporcionando información sobre cómo elegir realmente un filtro de suavizado, que es, a mi entender, de qué se trata realmente la pregunta.
En primer lugar, me gustaría repetir lo que ha quedado claro en la discusión que se genera a partir de las otras respuestas: la categorización de los filtros de suavizado en la pregunta en filtros FIR / IIR lineales e invariantes en el tiempo (LTI) por un lado, y Los filtros Savitzky-Golay, por otro lado, son engañosos. Un filtro Savitkzy-Golay es solo un filtro FIR estándar diseñado de acuerdo con un criterio específico (aproximación polinómica local). Entonces, todos los filtros mencionados en la pregunta son filtros LTI.
La pregunta restante es cómo elegir un filtro de suavizado. Si la complejidad computacional y / o la memoria son un problema, los filtros IIR pueden ser preferibles a los filtros FIR, porque típicamente lograrán una supresión de ruido comparable (es decir, atenuación de banda de detención) con un orden de filtro mucho menor que los filtros FIR. Pero tenga en cuenta que si es necesario el procesamiento en tiempo real, una posible desventaja de los filtros IIR es que no pueden tener una respuesta de fase exactamente lineal. Entonces la señal deseada sufrirá algunas distorsiones de fase. Para el procesamiento fuera de línea, las distorsiones de fase se pueden evitar, incluso con filtros IIR, aplicando un filtro de fase cero .
Además de las consideraciones discutidas en el párrafo anterior, lo que importa es principalmente el criterio de diseño, no tanto si el filtro es FIR o IIR, porque cualquier filtro IIR (estable) puede ser aproximado con precisión arbitraria por un filtro FIR, y cualquier El filtro FIR puede aproximarse mediante un filtro IIR, aunque este último puede ser mucho más difícil. El criterio de diseño apropiado obviamente depende de las propiedades de los datos y el ruido. Cuando se trata de suavizar, generalmente asumimos datos suficientemente sobremuestreados (es decir, suaves). Si el ruido tiene principalmente componentes de alta frecuencia, es decir, si hay poca superposición espectral entre los datos y el ruido, queremos maximizar la atenuación de la banda de parada o minimizar la energía de la banda de parada, al tiempo que conservamos la señal deseada lo mejor posible. En este caso, podríamos elegir un filtro FIR de fase lineal diseñado de acuerdo con un criterio minimax utilizando el algoritmo Parks-McClellan. También podríamos minimizar la energía de la banda de parada (es decir, minimizar la potencia de ruido en la banda de parada) eligiendo un método de mínimos cuadrados. Una combinación entre los dos criterios (minimax y mínimos cuadrados) es posible eligiendo undiseño de mínimos cuadrados restringidos , que minimiza la energía de la banda de parada al tiempo que limita el error de aproximación máxima en la banda de paso.
Si el espectro de ruido se superpone significativamente con el espectro de la señal, se requiere un enfoque más cuidadoso, y la atenuación de la fuerza bruta no funcionará bien porque deja demasiado ruido (al elegir la frecuencia de corte demasiado alta) o distorsiona la deseada señal demasiado En este caso, los filtros Savitzky-Golay (SG) pueden ser una buena opción. El precio a pagar es la atenuación mediocre de la banda de detención, pero una ventaja es que algunas propiedades de la señal se conservan muy bien. Esto tiene que ver con el hecho de que los filtros SG tienen una respuesta de banda de paso plana, es decir,
dkH(ejω)dωk|ω=0=0k=1,2,…,r(1)
donde r es el orden del polinomio aproximado y H(ejω) es la respuesta de frecuencia del filtro. La propiedad (1) garantiza que los primeros r momentos de la señal de entrada se conservan en la salida, lo que significa que el ancho y la altura de los picos en la señal deseada se conservan bien.
Por supuesto, también hay un compromiso entre los dos tipos de filtros de suavizado discutidos anteriormente (alta atenuación de banda de detención y SG). Podríamos diseñar un filtro FIR con un cierto grado de planeidad en ω = 0 y usar los grados de libertad restantes para maximizar la atenuación de la banda de parada o minimizar la energía de la banda de parada. En el caso de los filtros FIR, el problema de diseño resultante es suficientemente simple (y convexo), y las rutinas de optimización generales disponibles en varios paquetes de software se pueden utilizar para obtener el filtro óptimo para la aplicación dada.
Para los interesados en la teoría de los filtros SG, las referencias más relevantes que puedo recomendar son las siguientes:
NOTA
mi respuesta anterior (antes de esta edición) denotaba que el filtro Savitzky-Golay (SG) como un dato de entrada no lineal y variable en el tiempo era incorrecto, debido a una interpretación errónea prematura de cómo un filtro Savitzky-Golay (SG) calcula su salida de acuerdo con el enlace wiki proporcionado. Así que ahora lo estoy corrigiendo para beneficio de aquellos que también verían cómo los filtros SG son implementables mediante el filtrado FIR-LTI. Gracias a @MattL. para su corrección, el gran vínculo que ha brindado y la paciencia que tuvo (que nunca podría haber mostrado) durante mi investigación del problema. Aunque honestamente preferiría una objeción más detallada que claramente no es necesaria, sin embargo. También tenga en cuenta que la respuesta correcta es la otra, esta es solo para una aclaración adicional de la propiedad LTI de los filtros SG.
Ahora no es sorprendente que cuando alguien (que nunca ha usado esos filtros antes) se enfrenta a la definición del filtro SG como un ajuste polinomial LSE de bajo orden a los datos dados, él / ella saltaría inmediatamente a la conclusión de que son dependientes de datos, no lineales y Tiempo (cambio) variable, filtros adaptativos.
Sin embargo, el procedimiento de ajuste polinomial es interpretado hábilmente por los propios SG, de modo que permite un filtrado lineal completamente independiente de datos, invariante en el tiempo, lo que hace que SG sea un filtro LTI-FIR fijo.
El siguiente es un resumen más breve del enlace proporcionado por MattL. Para cualquier detalle que parezca faltar, consulte el documento original o solicite aclaraciones. Pero no me gustaría volver a producir el documento completo aquí.
Ahora, para aquellos que están familiarizados con el procedimiento LSE polyfit, simplemente escribiré la ecuación matricial resultante (del enlace) que define el conjunto de coeficientes óptimo:
Ahora recostémonos un momento y discutamos un punto aquí.
... Esto (el polyfit LSE) puede repetirse en cada muestra de la entrada, produciendo cada vez un nuevo polinomio y un nuevo valor de la secuencia de salida y [n] ...
Entonces, ¿cómo superamos esta sorprendente sorpresa? Al interpretar y definir la salida del filtro SG para que sea la siguiente:
COMENTARIO
CODIGO MATLAB / OCTVE
El resultado es:
Espero que esto aclare el problema.
fuente