Académique Documents
Professionnel Documents
Culture Documents
20
Matlab tiene una serie de funciones para el clculo de los rdenes que estos filtros necesitan para cumplir unas determinadas especificaciones como son buttord.m, cheb1ord.m, cheb2ord.m, y ellipord.m. Estas rdenes necesitan como parmetros las frecuencias que delimitan la banda de transicin, expresadas en frecuencia normalizada, donde 2 representa a la frecuencia de muestreo, y las especificaciones de atenuacin en cada banda. Tambin existen funciones para el diseo completo como butter.m, cheb1.m, cheb2.m y ellip.m, pero en determinadas ocasiones muestran problemas. Cuando intentamos hallar los coeficientes de un filtro de un orden muy alto, o con frecuencias de corte muy cercanas a 0 o a la frecuencia de Nyquist, el resultado no es el de esperar. Veamos lo que pasa al intentar disear un filtro de Butterworth con la orden butter.m con las siguientes especificaciones: p = 0.38 , s = 0.4 , R p = 0.2dB y Rs = 30dB .
Diagrama polo-cero 2.5 1 2 1.5 0.8 Respuesta en magnitud Imaginary Part 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 Frecuencia normalizada (/) 0.8 0.9 1 1 0.5 0 -0.5 -1 0.2 -1.5 -2 0 -2.5 -4 -3 -2 -1 Real Part 0 1
0.6
0.4
Se observa claramente que el resultado es errneo, pues la respuesta en magnitud no presenta la caracterstica montona de los filtros de Butterworth y no cumple especificaciones. Si miramos el diagrama polo-cero se deduce que incluso el filtro es inestable, al tener algunos polos fuera del crculo unidad, y que sus ceros estn lejos de z = 1 , donde deberan estar. Estos efectos se advierten para rdenes altos como es este caso ( N = 75 ), e incluso para rdenes no tan altos ( N 20 ).
21
La causa de este efecto es la forma en la que la orden butter.m halla los coeficientes. Primero halla la funcin de transferencia del filtro analgico equivalente, y despus la pasa al dominio digital mediante una transformacin bilineal, y es aqu donde se producen los errores debido a la precisin finita de la mquina. Una forma alternativa es no aplicar la transformacin bilineal a toda la funcin de transferencia, sino a cada uno de los polos y los ceros, e implementar el filtro IIR en forma de cascada, con secciones de segundo orden, agrupando parejas de polos y ceros cercanos. Es por ello que en lo que sigue, en el diseo de los filtros IIR no se utilizan las rdenes disponibles en Matlab para tal propsito, sino que se disearn unas propias que se mostrarn a continuacin. Al disear el filtro anterior con dichas funciones observamos que ya no existen problemas y el resultado es el esperado.
Diagrama polo-cero 1 1 0.8 0.6 0.8 Respuesta en magnitud 0.4 Imaginary Part 0.2 0 -0.2 -0.4 -0.6 0.2 -0.8 -1 0 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 Frecuencia normalizada (/) 0.8 0.9 1 -1 -0.5 0 Real Part 0.5 1 75 0.6
0.4
22
Diagrama polo-cero 1 1 0.8 0.6 0.8 Respuesta en magnitud 0.4 Imaginary Part 0.2 0 -0.2 -0.4 -0.6 0.2 -0.8 -1 0 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 Frecuencia normalizada (/) 0.8 0.9 1 -1 -0.5 0 Real Part 0.5 1 9 0.6
0.4
El cdigo de Matlab que se ha usado para disear el filtro de Butterworth se incluye como anexo con el nombre de mibutter.m.
23
Diagrama polo-cero 1 1 0.8 0.6 0.8 Respuesta en magnitud 0.4 Imaginary Part 0.2 0 -0.2 -0.4 -0.6 0.2 -0.8 -1 0 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 Frecuencia normalizada (/) 0.8 0.9 1 -1 -0.5 0 Real Part 0.5 1 5 0.6
0.4
0.6 0.4
0.8
Imaginary Part
Respuesta en magnitud
0.6
0.4
0.2
-0.8 -1
0.1
0.2
0.8
0.9
-1
-0.5
0 Real Part
0.5
Se incluye en el anexo el cdigo de Matlab para este tipo de filtro como micheb2.m
24
0.6 0.4
0.8
Imaginary Part
Respuesta en magnitud
0.6
0.4
0.2
-0.8 -1
0.1
0.2
0.8
0.9
-1
-0.5
0 Real Part
0.5
Se incluye en el anexo el cdigo de Matlab que implementa este tipo de filtros como miellip.m
25
audio o transmisin de datos. Adems, los filtros FIR son siempre estables, al estar todos sus polos en z = 0 , dentro del crculo unidad. Si es cierto que con los filtros FIR podemos conseguir respuestas lineales en fase, los rdenes requeridos en comparacin con los filtros IIR son mayores. No obstante los filtros FIR admiten la implementacin polifsica por lo que, aunque necesiten rdenes mayores, el coste computacional ser comparable al obtenidos con los filtros IIR. Los filtros que se contemplan son los siguientes: Filtros de Kaiser Filtros de Parks-McClellan Filtros de fase mnima, obtenidos mediante la factorizacin de Schuessler
Es interesante comentar el hecho de que no existen mtodos que obtengan el orden exacto que necesitan estos filtros para cumplir especificaciones, tan solo obtenemos una aproximacin. As, es necesario disear el filtro con la estimacin del orden y comprobar si cumple especificaciones. Si no es as, probaremos con rdenes superiores hasta encontrar el mnimo orden necesario. Esta bsqueda se realiza de forma adaptativa, es decir, los saltos en los que incrementamos el orden empiezan siendo grandes hasta que nos pasamos, entonces volvemos atrs, probamos con un salto menor y as sucesivamente. Si no se implementara de esta forma el tiempo de ejecucin del programa sera mucho mayor, debido a la gran carga computacional que requiere el diseo y comprobacin de estos filtros.
26
kaiserord.m: Nos devuelve la estimacin del orden N , la frecuencia normalizada Wn , la longitud de la ventana M y el factor de forma . Necesita como parmetros las especificaciones del filtro. Es posible que el filtro diseado con este orden no cumpla las especificaciones, pues solo es una estimacin.
kaiser.m: Disea una ventana de Kaiser con los parmetros M y . fir1.m: Disea el filtro objetivo por el mtodo de enventanado. Los argumentos de entrada son la ventana de Kaiser obtenida con la orden Kaiser, N y Wn .
0.6
0.4
27
firpmord.m: Nos devuelve la estimacin del orden N . Necesita como parmetros las especificaciones del filtro. Es posible que el filtro diseado con este orden no cumpla las especificaciones, pues solo es una estimacin.
firpm.m: Devuelve los coeficientes del filtro diseado. Sus parmetros son el orden del filtro N , y las especificaciones del filtro.
1 1
respuesta en magnitud
0.5
0.6
15
0.4
-0.5
0.2 -1 0
0.1
0.2
0.8
0.9
-1.5
-1
-0.5
0 Real Part
0.5
Se incluye como anexo el archivo miparks.m, donde se implementa el diseo de este tipo de filtros
28
mantienen las frecuencias de corte de la banda de paso y de rechazo, pero no el rizado en cada una de sus bandas. A este proceso se le denomina descomposicin de Schuessler y al filtro obtenido, filtro de Schuessler. Los filtros FIR de fase lineal de los que se partir para realizar la descomposicin de Schuessler sern los filtros de Parks-McClellan estudiados anteriormente.
29
Diagrama polo-cero
1+1
1
1-1
respuesta en magnitud 0.8 Imaginary Part
0.5
0.6
38
0.4
-0.5 0.2
2 -2
0.4 0.5 0.6 frecuencia(/) 0.7 0.8 0.9 1
H 0 (e j )
1+ 1+ 2
1
1- 1+ 2
respuesta en magnitud 0.8 Imaginary Part
0.5
0.6
38
0.4
-0.5
0.2
2 2
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 frecuencia normalizada (/) 0.8 0.9 1
0.5
Para elevar la respuesta en frecuencia del filtro, consideremos un filtro FIR de fase lineal
banda de paso y de 2 alrededor de 0 en la banda de rechazo. Definimos una nueva funcin de transferencia H1 (e j ) = H 0 (e j ) + 2 , que nos es ms que el filtro anterior con una respuesta en frecuencia elevada un valor constante 2 . Como el filtro
30
Factorizacin
Con el filtro modificado como se ha comentado en el paso anterior, somos capaces de factorizarlo en dos filtros de igual modulo, uno de fase mnima y otro de fase mxima. H1 ( z ) puede ser factorizado como H1 ( z ) = z
n0
pareja de ceros dobles en el crculo unidad y el resto de ceros que estn situados dentro del crculo unidad y por la tanto, es de fase mnima. Adems, el nuevo filtro H 2 ( z ) tiene exactamente un orden igual a N / 2 Se muestra a continuacin el filtro H 2 (e j ) correspondiente al ejemplo anterior.
Diagrama polo-cero 1 1
sqrt(1+ 1+ 2) sqrt(1- 1+ 2)
respuesta en magnitud
0.8
0.6
0.4
0.2
sqrt(2 2)
-0.6 -0.8 -1
0.1
0.2
0.8
0.9
-1
-0.5
0 Real Part
0.5
H 2 (e j )
Como se observa en las ilustraciones, el nuevo filtro H 2 (e j ) mantiene las mismas frecuencias de corte de la banda de paso y de rechazo, pero no las atenuaciones en cada una de ellas.
Normalizacin
La banda de paso del filtro H1 (e j ) oscilaba alrededor de 1 + 2 , debido a la modificacin que realizamos en el primer paso. Como se cumple que H1 (e j ) = H 2 (e j ) , el filtro de fase mnima H 2 (e j ) oscila alrededor de 1 + 2 . Si queremos normalizar el filtro para que oscile sobre la unidad, deberemos dividirlo entre
2
1 + 2 , obteniendo H min (e j ) = H 2 (e j ) / 1 + 2
31
respuesta en magnitud
0.8
0.6
0.4
0.2
0.1
0.2
0.3
0.7
0.8
0.9
Llegados a este momento, resulta fcil deducir la relacin entre las especificaciones del filtro FIR de fase lineal del que partimos H 0 (e j ) y las del filtro FIR de fase mnima que obtenemos
H min (e j ) . Una vez normalizado, el filtro H min (e j ) , oscilar alrededor de la unidad, entre 1 1 /(1 + 2 ) y 1 + 1 /(1 + 2 ) en la banda de paso. La atenuacin mnima en la banda de
rechazo ser de
1' = 1 +
1 1 1+ 2
2' =
2 2 1+ 2
Despejando de este par de ecuaciones 1 y 2 podemos hallar las especificaciones que debe cumplir el filtro de Parks-McClellan del que partimos para que el filtro H min (e j ) alcance unas determinadas especificaciones.
2 =
2' 2 2 '2
1 =
2.2.3.2 Implementacin
En la prctica, la implementacin de los filtros de Schuessler presenta algunos aspectos que han de tratarse con cuidado.
32
En el primer paso, cuando elevamos la respuesta frecuencial del filtro H 0 (e j ) , ste no tiene un rizado exactamente de 2 , pues esto es solo una restriccin. As, si elevamos la respuesta frecuencial un valor 2 , el filtro quedar un poco elevado sobre 0 y los ceros no coincidirn en el crculo unidad. En lugar de elevarlo un valor 2 , lo que hacemos es buscar el mnimo valor en la banda de rechazo y elevarlo justamente ese valor. Este efecto no es muy notable para rdenes alto, pero para rdenes bajos, puede ocurrir que las especificaciones se cumplan holgadamente y llegar a un resultado errneo. Tericamente conseguamos coincidir exactamente en el mismo lugar los ceros dobles del crculo unidad, pero en la prctica no es as. Debido a esto, nos encontramos con otro problema a la hora de separar la componente de fase mnima del filtro. Seleccionaremos todos los ceros que se encuentran dentro del crculo unidad, y tericamente, uno de cada pareja de ceros dobles. Pero en la prctica esta pareja de ceros estn relativamente cerca pero no en el mismo lugar. La solucin particular que se le ha dado a este problema es elegir el lugar intermedio entre cada pareja de ceros. Se halla la fase de cada uno de la pareja de ceros y se promedia, el cero que formar parte de H min (e j ) tendr esta fase promediada y mdulo unidad. Se adjunta en el anexo el cdigo de Matlab que implementa el diseo de los filtros de Schuessler con el nombre de mischuessler.m
33