Subido por Jacqueline Sánchez

FILTROS DIGITALES

Anuncio
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:
Descargar