# Filtro adaptativo

La definición de filtro adaptativo es un dispositivo que intenta modelar la relación entre señales en tiempo real de forma iterativa.
Se diferencia de los filtros digitales comunes tipo IIR o FIR, en que éstos tienen coeficientes invariantes en el tiempo, mientras que un adaptativo puede cambiar su forma de comportarse, es decir pueden cambiar sus coeficientes de acuerdo con un algoritmo adaptativo. De hecho no se saben los coeficientes del filtro cuando se diseña, estos coeficientes son calculados cuando el filtro se implementa y se reajustan automáticamente en cada iteración mientras dura su fase de aprendizaje.
El hecho de que estos filtros no sean invariantes temporales y que tampoco sean lineales hace que su estudio sea más complejo que el de un filtro digital, ya que no se pueden aplicar, salvo en un par de excepciones, las transformaciones en frecuencia, dominio Z, etc.

## Implementación

Los filtros adaptativos normalmente se implementan en forma de algoritmos sobre microprocesadores, DSP o FPGA.
La estructura de un filtro adaptativo es un sistema al que le llegan dos señales: x(n) y e(n), esta última se llama señal de error y viene de la resta de una señal a la que se llama señal deseada, d(n), y otra que es la salida del filtro y(n). A los coeficientes del filtro se les llama w(n), que son los que multiplican a la entrada x(n) para obtener la salida.
$y(n)=w(n)\,x(n)$
$e(n)=d(n)-y(n)\,$
En principio el objetivo es hacer que la señal de error sea cero, para ello el sistema debe configurarse para que, a partir de la señal de entrada x(n) se genera la salida y(n) de forma que sea igual a la señal deseada d(n). Cada una de las formas de minimizar ese error es un método de implementar los filtros adaptativos. Por ejemplo se podría proponer minimizar la función de coste $J=e^{2}(n)$, aplicando la regla delta se obtendrían los nuevos coeficientes como:
$w(n+1)=w(n)-\alpha \cdot \nabla J$
Donde la constante $\alpha$ se usa para ajustar la velocidad convergencia y evitar posibles inestabilidades. Operando se llega a esta otra ecuación:
$w(n+1)=w(n)-2\cdot \alpha \cdot e(n)\cdot x(n)$

## Algoritmo

Un algoritmo de aprendizaje de un sistema adaptativo podría ser:
* Inicializar de forma aleatoria los pesos
* Elegir un valor $\alpha$
* Calcular la salida y(n)
* Calcular el error e(n)
* Actualizar los pesos con la función de coste elegida
* Repetir un determinado número de veces desde el punto 3.

## Aplicaciones

Según lo explicado antes se puede plantear una pregunta: si ya se tiene la señal deseada ¿Para qué crear un sistema que la genere?.
Una respuesta es para modelar un sistema. Un ejemplo práctico es una transmisión de fax. En ella, las señales eléctricas pueden verse perturbadas durante el envío, y esta perturbación puede ser diferente de una transmisión a otra. Una solución para esto es, antes de mandar los datos mandar una señal patrón, que tanto el emisor como el receptor conozcan de antemano, así cuando llegue el receptor tendrá la señal perturbada y sabe la que debía ser. Estas dos señales se aplican a un filtro adaptativo que se configura para compensar las perturbaciones que pudieran haber durante esa transmisión. Como resultado se han modelizado todas las causas que modifican la transmisión y se ha creado un sistema que las compensa.
Otras aplicaciones de los filtros adaptativos son:
* Sistema de identificación
* Cancelación de eco
* Eliminación de ruido blanco
* Predictores