FILTROS DIGITALES Se considera el conjunto de filtros digitales especificados por un sistema lineal e invariante con relación entrada salida definida por la siguiente ecuación en diferencias finitas de coeficientes reales y constantes: Es decir, la salida depende de las muestras pasadas de la entrada y de las muestras pasadas de la propia salida. La respuesta impulsional del filtro digital es h [n], pudiéndose expresar la relación entrada salida a partir de la ecuación de convolución como: La función de transferencia es H (z) donde zi son los M ceros del sistema en el plano complejo y pi son los P polos. La respuesta en frecuencia del filtro es: La respuesta en frecuencia es periódica con periodo Fp = 1. Si h [n] es real, el módulo Hm (F) es una función par y la fase Φ (F) es una función impar. El módulo al cuadrado se puede encontrar como: i la fase El retardo de grupo se define como: Un filtro debe ser estable e interesa que tenga bandas de paso con módulo 1 y fase lineal, y bandas atenuadas con módulo cero. El filtro ideal no es realizable y se debe diseñar permitiendo una aproximación dentro de unos límites prefijados. Existen dos tipos principales de filtros digitales: Filtros de Respuesta Finita al Impulso (FIR) y Filtros de Respuesta Infinita al Impulso. ---------------------------------------------------------------------------------------------------------------------------- FILTRO FIR Son filtros no recurvisos, es decir los coeficientes ai son cero de la ecuación (1). Puede diseñarse con fase lineal Tienen respuesta al impulso de duración finita. Siempre son estable al no tener realimentación. Consideremos un sistema lineal e invariante caracterizado por una respuesta impulsional h[n] con coeficientes diferentes de cero para 0≤ n <L, es decir de longitud L muestras. Este sistema es un filtro FIR de orden M = L-1. Introducción Respuesta impulsional h [n] (la consideramos causal): Orden del filtro M Longitud del filtro L=M+1 Salida del filtro a la señal x [n] de entrada. Ecuación de convolución: Análisis en el dominio Z y frecuencial Función de transferencia H(z) La respuesta impulsional es el conjunto de L coeficientes de la forma polinómica de H(z), zi son los M ceros del sistema en el plano z. Respuesta Frecuencial H(F) Si los coeficientes del filtro tienen simetría (par: h [M-n] = h [n]; o impar h [M-n] = - h [n]), la fase es lineal y es: con posibles saltos de π radianes a las frecuencias donde hay un cero de H(F). Ejemplo: El filtro FIR con respuesta impulsional: h[n]=[1, 0.5858, 1.1716, -2.2426, 0, 2.2426, -1.1716, -0.5858, -1], de orden M=8 y L=9 coeficientes, tiene una distribución de ceros en el plano z representada en la figura 1b con cero a: y 8 polos en el origen. Figura 1a. Ejemplo de respuesta impulsorial de un FIR Figura 2b. Diagrama de polos y ceros El módulo de la respuesta en frecuencia y su fase se representan en las figuras 1c y 1d. Figura 1c y 1d Modulo y fase de la respuesta en frecuencia La respuesta a frecuencias 0, 0.125 y 0.5 es 0. La ganancia máxima es cercana a 6 a frecuencia ~0.22 La fase del filtro es lineal, con un retraso de 4 muestras La fase presenta un salto de 180º en las frecuencias donde hay un cero. Realización del filtro FIR: Estructura directa Por cada muestra de entrada se puede calcular la muestra de salida haciendo el producto vectorial entre el vector de coeficientes b y el vector de señal xn. Una vez hecho el cálculo de la muestra de salida se actualiza el vector de señal con la nueva muestra de entrada y se calcula la nueva salida. El proceso itera mientras haya señal en la entrada del filtro. La iteración se hace desde n = 0 hasta n = Nx-1; con valores iniciales v [1], ..., v [M], a especificar. Con condiciones iniciales nulas, los valores iniciales son cero (v [1] = v [2] = ... = v [M] = 0). Función Matlab estructura directa Editamos un fichero de tex con nombre y extensión: sv_fir.m Su contenido es: Una segunda opción es hacer el filtrado del bloque sin copiar las muestras de actualización del estado del filtro en cada iteración. Una alternativa es ampliar el vector de señal con el vector de estado interno del filtro y hacer el producto vectorial entre los coeficientes del filtro y el segmento de este vector ampliado que corresponda. Se muestra un ejemplo: Algunas funciones útiles de MATLAB por el tema de filtros tic, ... toque: permite medir tiempo entre instrucciones filter(b,a,x): rutina de filtrado zplane(b,a): representa los ceros y polos de H(z) con coeficientes de numerador "b" y denominador "a". atan2(Hi,Hr): permite calcular la fase de un complejo entre ± π (la función atan devuelve valores entre ±π /2). Unwrap(Fase): Recupera valores de fase superiores a π. Freqz(b,a): representa el módulo y la fase de H (z). Hay que notar que el eje de frecuencias queda normalizado por π (las frecuencias positivas quedan entre 0 y 1, en lugar de quedar entre 0 y 0.5). Estructura Lattice FIR Esta estructura es equivalente a la estructura directa de filtrado FIR: considerando b0 = 1, si no se cumple esta condición se aplica un factor multiplicador. Figura 3. Etapas de una estructura lattice de orden M El filtro queda caracterizado por el conjunto de valores k1, k2, ..., kM, llamados PARCORS. Son valores constantes que se pueden obtener del conjunto de coeficientes bn. Análisis de la estructura Orden 1 Figura 4. Estructura lattice por un FIR de orden 1. Orden 2 Figura 5. Estructura lattice por un FIR de orden 2. Orden 3 Figura 6. Estructura lattice por un FIR de orden 3. Para Orden M Figura 7. Estructura lattice por un FIR de orden 3. Nótese que los coeficientes de BM(z) y los de CM(z) son los mismos cambiados de orden. La función de filtrado tiene la siguiente estructura: Paso de los M+1 Coeficientes bn los M Parcors ki Dados los coeficientes bn del filtro FIR (con b0 = 1), se tiene que; El análisis de la estructura Lattice FIR nos ha dado: de la segunda ecuación se puede obtener: y sustituir a la primera, con el que de donde, aislante BM-1 (z) queda: donde kM = BM. Se debe notar que b1 (M-1) = 1, De este modo, se puede iterar reduciendo el orden hasta llegar a B1 (z), estimando los valores de kM-1, kM-2, ..., k1. El procedimiento iterativo es el siguiente: Inicialización: Iteración: El algoritmo funciona siempre que |Km| sea diferente de 1. Si lo es, eso indica que el polinomio Bm (z) tiene una raíz en la circunferencia de radio 1 que deberá factorizar para pasar a Bm-1 (z). El caso particular de los filtros FIR de fase lineal, en que CM (z) = ± BM (z), con kM = ± 1. para otros casos, el polinomio Bm (z) debe factorizar. Paso de coeficientes a parcors El listado de la función que pasa de coeficientes ai los coeficientes de reflexión ki o parcors co2par.m es: Diseño del filtro FIR (cálculo de los coeficientes) Se quiere diseñar, es decir, calcular los coeficientes de un filtro FIR que sea una buena aproximación a un filtro ideal. Un filtro ideal se caracteriza por tener módulo 1 y fase lineal (retraso constante) en las bandas de paso, y módulo cero a las bandas atenuadas. Este comportamiento no se puede alcanzar, por lo que se trata de encontrar una solución que se aproxime suficientemente bien. Especificiación frecuencial del filtro Modulo: Banda de paso: Banda atenuada: Fase lineal: Que corresponde a un retardo constante de M/2 muestras. Ganancia: Atenuación: Si se toma es decir, el módulo máximo permitido, la ganancia en dB es siempre negativo o cero (la atenuación es siempre no negativa), quedando las bandas de paso y atenuada limitada por: Banda de paso: Banda atenuada: Ejemplo: especificación de un filtro pasa bajo Con referencia de módulo máximo, resulta δp = 0.0575 y δa = 0.0106, por lo que las plantillas de módulo y ganancia son: Figura 8. Diseño de filtros FIR de fase lineal Método óptimo: Algoritmo de Parks-McClellan El método óptimo proporciona los coeficientes de un filtro FIR de mínimo orden, aproximando un comportamiento de rizado constante a las bandas de paso y atenuadas. El filtro se obtiene mediante el algoritmo de Remez, desarrollado por Parks y McClellan. Las primeras versiones de Matlab utilizan la función Remez (...). Esta ha sido actualizada por la función firpm (...), aunque se mantienen los mismos argumentos. b=firpm(M,Fid,mid,pesos) Los parámetros de entrada son: M: orden del filtro (se devuelven L = M + 1 coeficientes bi). Fid: vector formado por las frecuencias límite de las bandas de paso y atenuadas. Hay que especificar todo el intervalo de frecuencias positivo, es decir desde 0 hasta 0.5. Matlab utiliza una normalización frecuencial de π, por lo que los valores anteriores se multiplicarán por 2. mid: vector formado por los valores ideales de módulo del filtro a las frecuencias Fid pesos: vector formado por el peso relativo inverso de la tolerancia de módulo a cada lado especificada. Normalmente se toma la tolerancia a la banda de paso como referencia. El procedimiento de diseño es el siguiente: 1. Se define la plantilla de módulo del filtro, con las frecuencias límite de las bandas de paso y atenuada y sus tolerancias, definiendo los vectores Fid, mid y pesos. Para el caso paso-bajo se tiene: Fid = 2 * [0, Fp, Fa, 0.5]; mid = [1,1,0,0]; pesos = [a, dp] (también se puede usar pesos = [1, dp / a] o pesos = [da / dp, 1]). 2. Se elige un valor inicial M (orden del filtro). Un valor aproximado lo proporciona: 3. Se calcula el filtro con b = firpm (M, Fid, mid, pesos) 4. Se comprueba su comportamiento de módulo 5. Se reajusta el orden M. a. si el diseño cumple la plantilla con creces M se hace más pequeño b. si el diseño no logra la plantilla M se hace más grande c. Se vuelve al punto 3 para recalcular un nuevo filtro, mientras no se encuentre la solución de orden mínimo. Ejemplo (continuación del ejemplo anterior) Recordemos que las especificaciones del filtro son: Banda de paso entre 0 y Fp = 0.2; con una tolerancia correspondiente αp = 1 dB. Banda atenuada entre Hace = 0.3 y 0.5; con tolerancia correspondiente αa = 40 dB. Las tolerancias cada banda son: Los vectores que especifican el filtro son: Con un orden inicial M = 13 obtenemos las siguientes curvas de módulo y ganancia: que no cumplen la plantilla de especificaciones. Para alcanzarla, se debe aumentar hasta M = 15. Métodos de ventanas h[n]=hi[n] w[n] hi[n]: Respuesta ideal del filtro obtenida por transformada de Fourier Inversa del filtro ideal. Para filtro pasa-bajo: w[n]: ventana de L = M + 1 muestras con simetría respecto de la muestra central. Para las tres primeras ventanas tenemos que encontrar la longitud del filtro por prueba y error. Una vez diseñado el filtro de orden M en comprobamos el comportamiento. Si no es satisfactorio modifican el orden y recalculamos la ventana y la respuesta ideal. Para las especificaciones del ejemplo anterior se obtiene: Ventana de Kaiser: L = 23, orden M = 22 Figura 9. Modulo del FIR con ventana Kaiser de orden 22.b) curva de atenuación Se logra con creces la plantilla a la banda de paso y se ajusta el extremo de la banda atenuada. Con la ventana de rectangular y M = 22 queda: Figura 10. Modulo del FIR con ventana rectangular de orden 22.b) curva de atenuación que como se ve no alcanza la plantilla ni a la banda de paso ni en la banda atenuada ---------------------------------------------------------------------------------------------------------------------------- FILTRO IIR Consideremos un sistema lineal e invariante caracterizado por una respuesta impulsional h [n] que se corresponde con un sistema realimentado de orden P. Introducción Son filtros recursivos. Su respuesta al impulso se debe calcular recursivamente y en general es infinita. Respuesta impulsional h [n] (la consideramos causal); Orden del filtro: Q, valor máximo entre el orden del numerador M y el del denominador P, de la función de transferencia H (z) Longitud de la respuesta impulsional del filtro infinita La salida del filtro a la señal de entrada x [n] es: Función de transferencia H (z) La TZ de la ecuación (38) Y la función de transferencia: Comparando con (40) zi son los M ceros del sistema en el plano z. pi son los P polos del sistema en el plano z. Para que el filtro sea estable hay que |pi|<1 Respuesta frecuencial H(F) Realización del filtro IIR Estructura directa Figure.11 Estructura directa tipo I de un IIR El esquema de la figura es la implementación directa de la relación entrada-salida. La primera parte corresponde a una estructura FIR, h1 [n] y la segunda a una estructura AR, h2 [n]. Esta estructura tiene M + P + 2 sumadores, M + P multiplicadores y M + P registros. Aplicando la propiedad conmutativa de la convolución se pueden intercambiar de posición los dos filtros, con lo que la estructura se puede ver como: donde se puede simplificar una de las dos líneas de retraso, ya que w (i) = v (i). En el esquema se considera que M <P, sólo a nivel ilustrativo. El esquema de la estructura simplificada se muestra en la siguiente figura, donde el número de productos y sumas es el mismo que en el esquema anterior, aunque el número de registros es Q el orden del filtro, es decir, el valor máximo entre M y P: Figura12. Estructura directa tipo II de un IIR Las ecuaciones y variables para programar esta estructura son: Q = max (P, M) Una vez se ha calculado y [n] es necesario actualizar los valores del vector v. La iteración se hace desde n = 0 hasta n = Nx-1; con valores iniciales v [1], ..., v [P], a especificar. Con condiciones iniciales nulas, los valores iniciales son cero (v [1] = v [2] = ... = v [P] = 0). Diseño filtros IIR para transformación bilineal Los filtros IIR se pueden diseñar a partir de las técnicas de diseño de filtros analógicos, mediante la transformación bilineal. Esta transformación representa un cambio de variable entre s y z. Como caso particular, el cambio aplica a la variable frecuencial F y f en los dominios s y z. El filtro digital especifica definiendo los comportamientos tolerados de módulo a las bandas de paso y atenuadas. Para el caso paso bajo un filtro especifica con una atenuación máxima αp a la banda de paso, limitada a 0≤F≤Fp y una atenuación mínima αa a la banda atenuada, limitada a Fa≤F≤0.5. La técnica de diseño de filtros analógicos (obtención de H (s)) que proporciona un sistema de orden mínimo es la que responde a la aproximación de Cauer (o filtros elípticos). Otras aproximaciones son las de Butterworth, Txebyshev o Inversa de Txebyshev). Este procedimiento da como resultado una función de transferencia H (z) de orden Q, con numerador y denominador del mismo orden (M = P = Q). El número de polos y ceros es el mismo. Método óptimo: Algoritmo de Cauer o elíptico Matlab incorpora las funciones de cálculo de este tipo de procedimiento. Para el caso de utilizar la aproximación de Cauer se hace: Filtro con módulo máximo unidad (Matlab hace esta normalización por defecto) a. Cálculo del orden Q a partir de las especificaciones: b. Cálculo de los coeficientes de numerador y denominador del filtro, normalizando módulo máximo la unidad: El vector b y a: Filtro con módulo máximo Href = 1 + δp a. Ajuste de la atenuación total b. Cálculo del orden Q a partir de las especificaciones c. Cálculo de los coeficientes de numerador y denominador del filtro. Ejemplo: Se quiere diseñar un filtro paso bajo IIR con las siguientes especificaciones de módulo, con módulo máximo Href = 1 + δp: Banda de paso entre 0 y Fp = 0.2; con una tolerancia correspondiente αp = 1 dB. Banda atenuada entre Fa = 0.3 y 0.5; con tolerancia correspondiente αa = 40 dB. Los parámetros del programa son: Se obtienen los siguientes valores: • Orden del filtro Q = 4 (el filtro FIR era de orden M = 15 en diseño óptimo con las mismas especificaciones) • Coeficientes numerador: b = (0.0655 0.1167 0.1609 0.1167 0.0655) • Coeficientes denominador: a = (1.0000 -1.5035 1.7320 -0.9858 0.3146) • Las curvas de módulo (lineal y en dB) y fase (en grados) son: Modulo, ganancia y fase de IIR típico de orden 4 El programa de prueba de diseño del filtro es el siguiente: