# Filtro digital

Un filtro digital es un tipo de filtro que opera sobre señales discretas y cuantizadas, implementado con tecnología digital, bien como un circuito digital o como un programa informático.

## Definición

Un filtro digital es un sistema que, dependiendo de las variaciones de las señales de entrada en el tiempo y amplitud, realiza un procesamiento matemático sobre dicha señal, generalmente mediante el uso de la Transformada rápida de Fourier obteniéndose en la salida el resultado del procesamiento matemático.
Los filtros digitales tienen como entrada una señal analógica o digital y en su salida tienen otra señal analógica o digital, pudiendo haber cambiado en amplitud, frecuencia o fase dependiendo de las características del filtro digital.
El filtrado digital es parte del procesado de señal digital. Se le da la denominación de digital más por su funcionamiento interno que por su dependencia del tipo de señal a filtrar, así podríamos llamar filtro digital tanto a un filtro que realiza el procesado de señales digitales como a otro que lo haga de señales analógicas.
Comúnmente se usa para atenuar o amplificar algunas frecuencias. Por ejemplo, se puede implementar un sistema para controlar los tonos graves y agudos de cualquier sistema de audio.
El procesamiento interno y la entrada del filtro serán digitales, por lo que puede ser necesario una conversión analógica-digital o digital-analógica para uso de filtros digitales con señales analógicas.
Un tema muy importante es considerar las limitaciones del filtro de entrada debido a que la señal debe poder ser reconstruida, según el Teorema de muestreo de Nyquist-Shannon.

## Caracterización

Un filtro digital se caracteriza por su función de transferencia, o de manera equivalente, su relación de recurrencia. El análisis matemático de la función de transferencia puede describir cómo responde a cualquier entrada. Como tal, el diseño de un filtro consiste en desarrollar especificaciones apropiadas para el problema (por ejemplo, un filtro de paso bajo de segundo orden con una frecuencia de corte específica), y luego producir una función de transferencia que cumpla con las especificaciones.
La función de transferencia para un filtro digital lineal, invariante en el tiempo, puede expresarse como una función de transferencia en el dominio Z; si es causal, entonces tiene la forma de la ecuación:
    $H(z)={\frac {B(z)}{A(z)}}={\frac {b_{0}+b_{1}z^{-1}+b_{2}z^{-2}+\cdots +b_{N}z^{-N}}{1+a_{1}z^{-1}+a_{2}z^{-2}+\cdots +a_{M}z^{-M}}}$
en la cual el orden del filtro es mayor de M o N, siendo ambos números enteros.
Esta función corresponde a un filtro recursivo, que generalmente conduce a un comportamiento de respuesta de impulso infinito IIR, pero si el denominador se iguala a la unidad, es decir, sin retroalimentación, entonces se convierte en un filtro de respuesta de impulso finito o FIR.

## Técnicas de análisis

Se puede emplear una variedad de técnicas matemáticas para analizar el comportamiento de un filtro digital dado. Muchas de estas técnicas de análisis también pueden emplearse en diseños, y a menudo forman la base de una especificación de filtro.
Por lo general, son caracterizados los filtros calculando cómo responderán a una entrada simple, como un impulso. Entonces se puede extender esta información para calcular la respuesta del filtro a señales más complejas.

### Respuesta impulsiva

La respuesta al impulso, a menudo denotada $h[k]$ o $h_{k}$ es una medida de cómo responderá un filtro a la función delta de Kronecker. Por ejemplo, dada una ecuación de diferencia, se establecería $x_{0}=1$ y $x_{k}=0$ para $k\neq 0$ y luego, se evaluaba dicha ecuación. La respuesta al impulso es una caracterización del comportamiento del filtro. Los filtros digitales generalmente se consideran en dos categorías: respuesta de impulso infinito (IIR) y respuesta de impulso finito (FIR). En el caso de los filtros FIR lineales invariantes en el tiempo, la respuesta al impulso es exactamente igual a la secuencia de los coeficientes del filtro:
    $y_{n}=\sum _{k=0}^{N}h_{k}x_{n-k}$
Los filtros IIR, por otro lado, son recursivos, y la salida depende de las entradas actuales y anteriores, así como de las salidas anteriores. Esto se expresa de manera general con la siguiente igualdad:
    $\sum _{m=0}^{N}a_{m}y_{n-m}=\sum _{k=0}^{N}b_{k}x_{n-k}$
Al trazar la respuesta al impulso se revelará cómo responderá un filtro a una perturbación repentina y momentánea. Un filtro IIR siempre será recursivo. Aunque es posible que un filtro recursivo tenga una respuesta de impulso finita, los filtros no recursivos siempre tendrán una respuesta de impulso finita.

## Tipos de filtros

Hay varios tipos de filtros digitales así como distintas clasificaciones de éstos:
* Según la parte del espectro sobre la cual actúan:
** Filtros paso alto.
** Filtros paso bajo.
** Filtros paso banda.
*** Banda eliminada.
*** Multibanda.
*** Pasa todo.
*** Resonador.
*** Oscilador.
*** Filtro peine (Comb filter).
*** Filtro ranura o filtro rechaza banda (Notch filter).
* Según su orden:
** primer orden
** segundo orden
* Según su respuesta ante entrada unitaria:
** FIR (Finite Impulse Response)
** IIR (Infinite Impulse Response)
** TIIR (Truncated Infinite Impulse Response)
* De acuerdo con la estructura con que se implementa:
** Laticce
** Varios en cascada
** Varios en paralelo

## Expresión general de un filtro

Hay muchas formas de representar un filtro. Por ejemplo, en función de w (frecuencia digital), en función de z y en función de n (número de muestra). Todas son equivalentes, pero a la hora de trabajar a veces conviene más una u otra. Como regla general se suele dejar el término a$_0$=1.
Si se expresa en función de z y en forma de fracción:
    $H(z)={\frac {{\sum _{k=0}^{M}}b_{k}\cdot z^{-k}}{{\sum _{k=0}^{N}}a_{k}\cdot z^{-k}}}$
Y en dominio de n:
    $y[n]={\sum _{k=0}^{N}}b_{k}\cdot x[n-k]-{\sum _{k=1}^{M}}a_{k}\cdot y[n-k]$
Los coeficientes a$_k$ y b$_k$ son los que definen el filtro, por lo tanto el diseño consiste en calcularlos.

## Ejemplo del diseño de un filtro

El proceso se inicia estudiando las especificaciones, y, basándose en éstas, se elige el tipo de filtro. En este ejemplo, se desea diseñar un filtro digital que no deje pasar las señales de frecuencias menores a 5Hz y la de 50Hz y que no altere al resto, la frecuencia de muestreo de la señal de entrada será 1000Hz y se requiere que la fase sea lineal.
Con estas especificaciones, se elige un filtro FIR que puede ser diseñado manualmente o con computadora. En este ejemplo, el método de diseño, usa el algoritmo de Remez. Mediante el software Matlab se obtienen los coeficientes que definen el filtro, que en la ecuación anterior se llaman a y b (el numerador es la variable b y el denominador solo tiene un término que es 1, como corresponde a un filtro FIR). Para ello, se invocaba la función de Matlab remezord, hoy obsoleta y en la actualidad sustituida por firpmord como indica este fragmento de código, en el cual los comentarios explican los parámetros usados:
En la siguiente figura, tomada de un electrocardiograma, se muestra el aspecto de la función de transferencia del filtro en la parte central. En la parte superior, se muestra la señal que se quiere filtrar y en la parte inferior la señal ya filtrada.
El siguiente paso es seleccionar la forma de implementarlo, es decir su estructura. Luego, se elige el hardware sobre el que funcionará, el cual, normalmente, es un Procesador digital de señal o un dispositivo programable FPGA, aunque también puede ser un programa de computador. Finalmente se usan los coeficientes obtenidos y la estructura elegida para crear el programa bien sea en Matlab, o en cualquier otro lenguaje.