¿Es el filtro de Kalman adecuado para suavizar el espectro de sonido?

2

Estoy implementando un software similar a un espectrógrafo en tiempo real con una FFT modificada. El vector de salida resume las intensidades de varios tonos musicales presentes en la señal de entrada. Su tamaño es una constante pequeña (en comparación con el tamaño de la ventana FFT) y los valores pueden ser continuos. El problema es que hay mucho ruido tanto de la señal como del proceso de transformación. Creo que algún tipo de suavizado podría ayudar ya que los tonos que deberían enfatizarse son generalmente de mayor duración y los valores ruidosos varían mucho de un cuadro a otro.

Me he encontrado con el filtro de Kalman que se usa principalmente en sistemas de control en tiempo real. Parece ser muy poderoso. Como he investigado en la literatura, no estoy seguro de si este tipo de filtro es realmente adecuado para mi problema. Parece que el filtro de Kalman requiere modelar el proceso lineal subyacente. Por otro lado, no asumo ningún proceso en particular detrás de la señal. ¿Debería modelar un proceso de estado estable trivial o este tipo de filtro no es adecuado?

    
pregunta Bohumir Zamecnik

2 respuestas

1

Ciertamente, puede usar un filtro de Kalman adaptativo para identificar o eliminar el ruido, y hay cientos de artículos sobre esto en la documentación de procesamiento de señales. Si necesita o no depende de la naturaleza de su tarea y del ruido, si el ruido está en el rango de frecuencia de la señal, si el ruido depende de la señal, etc.

Si fuera yo, a menos que hubiera una razón para hacerlo de otra manera, lo intentaría (en el siguiente orden)

1) asegúrate de que la señal sea buena; es decir, asegúrate de que estás haciendo todo lo posible para sofocar el ruido antes de que se obtenga, y asegúrate de no hacer nada tonto, como crear un alias de ruido en la señal al no adquirir lo suficientemente rápido o prefiltro (lo que dificultará mucho su tarea

2) Pruebe las técnicas de filtrado estándar, como los filtros FIR e IIR para hacer lo que necesita hacer

3) Pasa a técnicas no lineales, pero sencillas, como el filtro de mediana, el filtro Sovitsky-Golay, ..., que podrían ser más tolerantes a tu ruido.

4) Saque las pistolas grandes: los filtros adaptativos.

Encontrar el filtro adecuado en situaciones difíciles puede ser cuestión de arremangarse y probar diferentes cosas.

    
respondido por el Scott Seidman
0

Un filtro de Kalman es excelente si no conoce todos los estados del sistema, en realidad es un sistema de control de tipo adaptativo u observador que utiliza la estimación de estado para llenar los espacios vacíos dejados por el ruido.

Los estimadores de estado de Kalman o Luenberger son excelentes para sistemas bien definidos, de alto ruido, donde se pueden observar ciertos estados y esencialmente reducidos a lo que "deberían ser" si todos los estados del sistema fueran observables.

Entonces, para tu sistema, siempre que no estés aliasando tus entradas con la FFT, no deberías necesitar ninguno de los filtros más locos y probablemente puedas usar un sistema de control PID usando un FIR o IIR.

Además, ya que no estás completamente seguro de qué es el sistema que estás modelando, sería una buena idea asegurarte de que la FFT no está desviando de tu señal y tratar de hacer que la señal esté tan limpia. lo más posible como entrada antes incluso de filtrar el ruido y las perturbaciones, de esa forma estará haciendo que su trabajo de procesamiento de señales / controles sea lo más fácil posible para usted mismo.

ADDENDUM: Simplemente lea la respuesta de TomL, y tiene un grano de verdad. Matlab y Simulink son excelentes para este tipo de problemas, con la caja de herramientas DSP incorporada de Matlab, puede crear fácilmente trabajos de procesamiento de señal más fáciles de intermedios y con su nueva caja de herramientas HDL, si está usando VHDL o Verilog, incluso puede obtener el código escupido. fuera por ti Además, una vez que se construye el bloqueo de IP, puede integrarlo en una simulación de Simulink con una / su FFT y configuración de señal para que pueda probar rápida y fácilmente la validez general de diferentes tipos y métodos de filtrado sin tener que recurrir a probar diferentes compilaciones cualquier idioma / pila en la que estés trabajando actualmente. Así que una vez que elija cualquier método, puede burlarse fácilmente de usted mismo, de sus inversionistas o de sus superiores. Agregar esto a cualquier control / pila de procesamiento de señales hace que tu vida sea mucho más fácil a largo plazo que es con lo que empiezo cualquiera de mis trabajos / proyectos ahora.

El uso de un enfoque de alto nivel primero le permitirá poder dividir su sistema en sus bloques de vista de 30,000 pies más básicos que luego puede empujar en el sistema de control que mejor se adapte a esos bloques.

TL; DR: Asegúrese de que sus señales sean lo mejor que pueda y no las rompa en su FFT, modele cómo desea que se procese la señal, ajuste un filtro al modelo ( Kalman probablemente no lo será).

    
respondido por el Jeff Langemeier

Lea otras preguntas en las etiquetas