Un filtro es un sistema que está diseñado para eliminar o modificar algún
componente de una señal. Introduciremos en este capitulo los filtros FIR
(Finite Impulse Response). Estos filtros son sistemas para los cuales, cada sample
de salida es una suma finita y ponderada
de la secuencia de entrada.
Un sistema en tiempo discreto es un proceso
computacional que transforma cada secuencia de entrada en otra de salida. A
diferencia del capítulo anterior, donde en el proceso de sampleado y
reconstrucción, transformamos una señal continua en discreta o su inversa, en
este capitulo nos centraremos en el dominio de la señal discreta.
The running
average filter: Una de las más
simples transformaciones de una señal discreta es computar un promedio o
average de dos o más secuencias de entrada. Un filtro FIR es la generalización
de esta idea.
Veamos un ejemplo: una secuencia de entrada es
ponderada como un promedio de cada tres valores de entrada.
![]() | ||
| filtro no causal |
Como vemos en el gráfico, la ecuación que relaciona
la salida con la entrada viene expresada como:
A esta ecuación se le denomina ecuación diferencia.
Si observamos detenidamente el gráfico nos damos cuenta que la secuencia de
salida contiene más valores que la secuencia de entrada, es decir, contiene más
valores no cero que la secuencia de entrada, y la salida es una versión
suavizada de la entrada. Esta es una característica de un filtro FIR.
También podemos ver como la respuesta del filtro
provee de un valor no cero antes de que la señal de entrada empiece. Esto no es deseable en aplicaciones de audio
directo, donde la señal viene directamente de un convertidor A/D. Como vemos,
para la computación de salida el filtro está tomando dos valores futuros, es
decir, el sistema está tomando un valor presente y dos futuros para producir su
promedio. Estos filtros son denominados no
causales, y no son aplicables en situaciones de tiempo real, ya que la
entrada no está disponible cuando la salida ha sido computada.
A los filtros que únicamente utilizan valores
presentes y pasados se les denomina causales.
La ecuación diferencia para un filtro como el anterior, pero en este caso
causal, es decir, que toma valores presentes y pasados es la siguiente:
![]() | ||
| Filtro causal |
De este modo podemos generalizar la ecuación del
filtro FIR, como:
Por lo tanto, un filtro queda definido si conocemos
sus coeficientes (bk).
Pongamos un ejemplo: Imaginemos un filtro de longitud
4, es decir de orden M=3, cuyos coeficientes son: bk=[ 3, -1, 2, 1].
Como vemos en la ecuación, el orden del filtro viene
determinado por la relación: Orden = longitud del filtro -1.
Para ilustrar estos conceptos podemos mostrar como se
puede utilizar un filtro FIR para modificar las secuencias de una señal.
Consideremos una señal de entrada en forma de onda sinusoidal que se ve
afectada por un ruido aleatorio Gaussiano, tal como se muestra en la parte alta
de la siguiente gráfica:
Podemos reducir la interferencia producida por el
ruido, usando un Running Average de 3 puntos:
El resultado de la señal una vez aplicado el filtro
se muestra en el medio de la gráfica. Como vemos, hemos reducido la interferencia
producida por el ruido. El filtro está realizando una ponderación de cada tres
samples de entrada consecutivos.
Si queremos producir una mayor eliminación de la
interferencia, podemos usar un filtro de mayor orden. En la parte baja del gráfico observamos la respuesta de un filtro de orden 6.
La utilización del filtro nos ha permitido minimizar
el efecto del ruido en nuestra señal. Si observamos detenidamente el gráfico,
se puede ver como las señales filtradas han aumentado la cantidad de samples de
la señal, exactamente un numero de samples equivalente al orden del filtro.
Respuesta
al impulso unitaria:
El impulso unitario, es la secuencia más simple que
podemos encontrar, ya que únicamente contiene un valor no cero.
Su notación matemática es la función delta:
![]() | ||
| impulso desplazado 2 muestras |
En el gráfico visualizamos un impulso que ha sido
desplazado 2 muestras. Este es un concepto muy útil en señales y sistemas, ya
que nos permite expresar una secuencia, como una suma de sus impulsos
desplazados.
![]() | ||
| Secuencia de una señal |
Así la secuencia discreta de una señal de entrada,
como la del gráfico, puede ser expresada como la suma de sus impulsos de
entrada:
Por lo tanto, cuando la entrada de un filtro FIR es
una secuencia de impulso unitario, su salida es por definición la respuesta al impulso
unitario h[n], es decir la respuesta al impulso del filtro no es más que los
coeficientes de salida de su ecuación diferencia. La longitud de esta secuencia
es finita.
Delay
unitario:
Es el más simple de los filtros FIR, contiene un
único coeficiente no cero. El filtro produce un desplazamiento temporal
equivalente al desplazamiento de su coeficiente.
![]() | ||
| Convolución con un delay |
La señal de entrada ha sido desplazada 2 samples a
partir de un filtro Delay de amplitud unitaria. La respuesta a la salida
mantendrá la misma señal, pero desplazada temporalmente.
Convolución
y filtros FIR:
La respuesta de un filtro FIR puede ser expresada
como la convolución de la secuencia de entrada y su respuesta al impulso:
En el gráfico anterior, la salida al sistema ha sido
expresada como una convolución de la señal de entrada respecto de la respuesta
al impulso, (en el ejemplo anterior un desplazamiento temporal de 2 samples)
Como vemos, la convolución es equivalente a una
multiplicación polinomial.
Diagrama de
bloques:
| Diagrama de Bloques |
Sin querer entrar en las demostraciones matemáticas,
definimos un filtro FIR como un sistema lineal e invariante en el tiempo (LTI).
Básicamente estas propiedades son:
Invarianza en el tiempo: Cuando una señal de entrada
es desplazada cierta cantidad de samples, su salida está retrasada por la misma
suma.
Linealidad: Cuando la entrada consiste en la suma de
varias secuencias escaladas, su correspondiente salida será la suma de los
valores escalados de sus correspondientes entradas. Es decir, podemos encontrar
la salida del sistema como la superposición de las salidas de los valores
individuales.
La respuesta al impulso h[n] de un sistema LTI es
simplemente la salida del sistema cuando a su entrada se ha introducido un
impulso unitario d[n]. Por lo tanto podemos conocer la respuesta de cualquier
sistema si conocemos su respuesta al impulso y la secuencia de entrada.
La convolución entre dos señales, en nuestro caso, la
entrada x[n] y su respuesta al impulso h[n] se expresa como:
Cabe recordar que la convolución cumple la propiedad conmutativa
y asociativa.
















Grande Pepe, gracias por hacerlo tan fácil!
ResponderEliminar