Filtro paso bajo por software

Un filtro paso bajo es un filtro que fija una frecuencia de corte y deja pasar cualquier frecuencia inferior a esa, mientras que atenúa frecuencias superiores. Al menos esa es la teoría, en la realidad «el corte» no es tan limpio y se ven afectadas las demás frecuencias. En realidad la frecuencia de corte y superiores no sufren una caída completa a cero si no una gran atenuación.

En electrónica el modelo más sencillo de filtro paso bajo es un filtro RC usando una resistencia y un condensador. En la imagen inferior se puede ver como montarla y como afecta a una señal ruidosa reduciendo el ruido de alta frecuencia.

Filtro paso bajo RC

Para realizar nuestro filtro paso bajo por software vamos a modelar matemáticamente un filtro RC.

double a = dt / (RC + dt)
output[t] = output[t-1] + a * (sensor[t] - output[t-1]); 

Donde:

  • dt – Es el tiempo, en sg, entre las muestras t-1 y t
  • RC – Resistencia * Capacidad del condensador
  • output[t] – Es la señal filtrada en el momento t.
  • sensor[t] – Es la entrada sin filtrar en el momento t.

RC en nuestro caso es un valor numérico que emula el comportamiento Para calcular RC partiremos de la frecuencia de corte «fc» que deseemos en Herzios:

RC = 1 / (2 * Pi * fc)

Tras esta visión general vamos a los detalles.

Cuando t = 0 se puede usar como output:

output[0] = a * sensor[0]

Si no necesitamos guardar los valores no hace falta que usemos un array, podemos usar una sola variable output guardando el valor del resultado anterior:

output = output + a * (sensor – output)

Veamos un ejemplo de señal (verde) sinusoidal sometida a ruido de alta frecuencia (azul) y filtrada usando un filtro de paso bajo (naranja):

Ejemplo de filtro paso bajo

Puedes probar aquí un simulador que cree para mostrar como funcionan los diferentes filtros.

Puedes ver esta misma explicación para filtros de paso alto.