En primer lugar, soy nuevo en DSP y no tengo una educación real en él, pero estoy desarrollando un programa de visualización de audio y estoy representando una matriz FFT como barras verticales como en una visualización de espectro de frecuencia típica.
El problema que tuve fue que los valores de la señal de audio cambiaron demasiado rápido para producir una salida visual agradable si solo asignaba los valores de FFT directamente:
Así que aplico una función simple a los valores para "suavizar" el resultado:
// pseudo-code
delta = fftValue - smoothedFftValue;
smoothedFftValue += delta * 0.2;
// 0.2 is arbitrary - the lower the number, the more "smoothing"
En otras palabras, estoy tomando el valor actual y lo comparo con el último, y luego agrego una fracción de ese delta al último valor. El resultado se ve así:
Entonces mi pregunta es:
¿Es este un patrón o función bien establecida para la cual ya existe un término? Es así, ¿cuál es el término? Utilizo "suavizado" arriba pero soy consciente de que esto significa algo muy específico en DSP y puede no ser correcto. Aparte de eso, parecía estar relacionado con un sobre de volumen, pero tampoco era exactamente lo mismo.
¿Hay mejores enfoques o más estudios sobre soluciones a esto que debería mirar?
Gracias por su tiempo y disculpas si esta es una pregunta estúpida (leyendo otras discusiones aquí, soy consciente de que mi conocimiento es mucho más bajo que el promedio que parece).
fuente
Respuestas:
Lo que ha implementado es un filtro de paso bajo unipolar, a veces llamado integrador con fugas . Su señal tiene la ecuación de diferencia:
fuente
Advertencia: ¡incluya algo de historia, papeles viejos (los amo) y tarjetas perforadas!
La primera versión anterior es menos natural, pero evita una multiplicación, y de alguna manera es más eficiente. Ambas fórmulas producen un filtro de respuesta de impulso lineal , causal e infinito . La historia se remonta a Poisson, Kolmogorov-Zurbenko Adaptive Filters , Brown (Pronóstico Estadístico para el Control de Inventario. McGraw-Hill, 1959), Holt (1957) y Winters (1960). Se implementa como un filtrado recursivo esquema de conocido con diferentes nombres en toda la literatura:
Para una nota histórica, Robert G. Brown y Arthur D. Little usaron este método en 1956 en el suavizado exponencial para predecir la demanda , aparentemente para la industria del tabaco. Un poco más de la historia y explicaciones se pueden encontrar en Holt-Winters Pronósticos para los simulado (o desarrolladores) - Parte I . Peter Zehna ofrece una revisión crítica en Algunos comentarios sobre el suavizado exponencial , 1966. Un capítulo de R. Brown en la Enciclopedia de Investigación de Operaciones y Ciencias de la Administración (Google books) data de la historia de 1944, las páginas legibles se reproducen aquí:
Muchos métodos extienden este suavizado, que carece de validez cuando los datos tienen una tendencia o estacionalidad. Algunos de ellos se conocen como suavizado exponencial doble o triple, y filtros Holt-Winters .
También puede verificar: ¿Cómo funciona este "filtro simple"?
fuente
El enfoque normal para los medidores de audio es un "detector de pico con pérdida".
Esto reacciona de inmediato a cualquier señal nueva o pico o transitoria en la señal, pero permanece durante un tiempo, por lo que crea una imagen mucho menos agitada. La disminución debería ser una constante entre 0 y 1. Controla la rapidez con la que se hacen las barras, siendo 0 instantáneo y 1 nunca.
fuente
new_value
si es mayor quecurrent_value * decay
En los círculos de contratistas del Departamento de Defensa de los EE. UU., Este filtro en particular se denomina con frecuencia "filtro alfa", porque puede caracterizarse con un parámetro que tradicionalmente se denomina "alfa".
Es directamente análogo a un filtro de paso bajo RC analógico simple.
Son extremadamente simples, tienen serias limitaciones, pero tienen la ventaja innegable sobre los filtros más complejos (¡y complicados!) Que, si te alejas de sus áreas problemáticas, hacen el trabajo.
fuente
Como se menciona en otras respuestas, este es un filtro recursivo de un solo polo, un tipo de filtro de respuesta de impulso infinito (IIR).
Un gran recurso para obtener información sobre esta y otras características de DSP es la Guía del científico e ingeniero para el procesamiento digital de señales de Steven W. Smith :
fuente