Lab3p1 PDF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 4

1

ELO 314 - Procesamiento Digital de Señales


Lab. 3 - Parte I: Filtros Digitales en MatLab
Preparado por
Dr. Matı́as Zañartu, e-mail: [email protected]
Dr. Christian Rojas, e-mail: [email protected]
Dr. Gonzalo Carrasco, e-mail: [email protected]

I NTRODUCCI ÓN
En este laboratorio se trabajará con conceptos básicos de filtros FIR (Finite Impulse Response) e IIR (Infinite
Impulse Response). La sección I hace un analisis sencillo de los filtros para luego focalizarse en la implementación
algoritmica (preambulo para el Lab2p2). La sección II profundiza en la teorı́a de filtros FIR. El objetivo de las
secciones III, IV y V es conocer y familiarizarse con la mayor cantidad de herramientas de diseño de MATLAB.

C ONCEPTOS B ÁSICOS DE FILTROS FIR E IIR


Los filtros FIR e IIR son ampliamente usados por ser sistemas LTI (lineales e invariables en el tiempo), lo que
implica que de forma simple pueden tomar diferentes respuestas en frecuencia usando transformaciones lineales.
Estos filtros pueden representarse como funciones de transferencia, y son descritos en el dominio del tiempo como:
N
X −1 M
X
y[n] = bi x[n − i] − ak y[n − k]. (1)
i=0 k=1
Un filtro FIR es aquel que puede ser expresado sin términos recurrentes, i.e., la salida es solo una combinación
lineal de valores de la entrada y pueden ser descritos considerando los coeficientes ak = 0 para k = 1, 2, ..., N
(el coeficiente a0 es siempre igual a 1). En cambio, los filtros IIR son recursivos, esto es que la salida depende
también de valores pasados de si misma.
Los filtros FIR son siempre estables (tienen solo ceros1 ), pueden ser diseñados con fase lineal, y no sufren de
mayores problemas por errores de redondeo de sus coeficientes. Los filtros IIR suelen ser más eficientes que los
FIR (requieren menos cálculos para obtener una misma respuesta), pero son muy sensibles a errores de redondeo
en sus coeficientes. Los filtros IIR pueden ser inestables y tienen una respuesta de fase no lineal.
La transformada Z permite analizar la respuesta de frecuencia de los filtros evaluando su función de transferencia
H(z) = B(z)/A(z) con H(z = ejw Ts ). La magnitud de esta respuesta |H(w)| determina cómo se altera la amplitud
en función de la frecuencia, y su respuesta de fase ∠H(w) define los retardos en el tiempo producto del filtro en
función de la frecuencia.
MATLAB cuenta con una serie de herramientas para el diseño y análisis de filtros que serán estudiados en
este laboratorio, entre ellos, f ilter , f datool, f reqz , f ir1, f ir2, f irpm, ellip, butter , cheby1, cheby2, etc. Otras
funciones diseñadas para este laboratorio serán utilizadas.

I. E FECTO DE POLOS Y CEROS EN FILTROS FIR E IIR


1) (4pto) Basado en la Fig. 1, diseñe un filtro que tenga dos ceros conjugados sobre el cı́rculo unitario, ubicados
en un ángulo θ en el plano Z .
Escriba la ecuación de diferencia del filtro y grafique la respuesta a impulso del filtro.
Escriba la expresión analı́tica en función de z y luego use z = ejwTs para obtener H(w) y grafique la magnitud
de la respuesta de frecuencia |H(w)| para tres distintos ángulos θ = π6 , π3 , π2 en el intervalo [−π, π ] y amplitud
en dB (20log10 (|H(w)|)).
Explique cómo el valor de θ se relaciona con la respuesta de frecuencia del filtro dada una frecuencia de
muestreo fs .
1
En realidad siempre tienen polos ubicandos en el origen del plano Z para hacer el filtro causal.
2

Im Im
Unit Circle Unit Circle
z1 p1
PSfrag replacements PSfrag replacements r
θ Re θ Re

z2
p2

r
Figure 1. Ubicación de dos ceros conjugados para un filtro FIR simple. Figure 2. Ubicación de dos polos conjugados para un filtro IIR simple.

2) (4pto) Basado en la Fig. 2, diseñe un filtro que tenga dos polos conjugados dentro del cı́rculo unitario, ubicados
en un ángulo θ en el plano Z . Considere que el filtro tiene además una ganancia sobre la entrada de b0 = 1−r .
Escriba la ecuación de diferencia del filtro y grafique la respuesta a impulso del filtro.
Escriba la expresión analı́tica en función de z y luego use z = ejw T s para obtener H(w) y graficar la magnitud
de la respuesta de frecuencia |H(w)| para θ = π3 y tres distintas amplitudes r = 0.99, 0.9, 0.7.
Explique cómo el valor de r afecta la respuesta de frecuencia y el ancho de banda del filtro.

3) (2pto) Implemente el filtro FIR en una función FIR_filter.m donde el filtrado de la señal sea por
convolución. Muestre el segmento de código que lo implementa.
(1pto) Aplique el filtro a la señal en npeech.mat ajustando los ceros para eliminar el tono que identifique
con plot_fft_mag(npeech,fs). Indique la frecuencia del tono y los coeficientes bk de su filtro.
(2pto) Muestre los espectros de la señal antes y despues del filtrado. Compare su señal filtrada con la señal
que entrega usar el comando filter de Matlab. ¿Tienen el mismo largo?. ¿Por qué?.

4) Implemente el filtro IIR de solo polos mediante ecuación de diferencias en una función
IIR_filter(yBuff, aCoeff, x). Recibe un vector de dos elementos con las últimas dos muestras de
salida (de la interación anterior), un vector de dos elementos con los coeficientes a1 y a2 , y la muestra de
entrada. Retorna un vector de dos: elementos con la nueva muestra de salida y la muestra anterior. Dado que
en Matlab las señales existen como vectores, hay que hacer como si llegaran los datos muestra a muestra
como ocurre en la LCDK. Por tanto se sugiere que se genere la señal de salida filtered_pcm con la señal
de entrada pcm (pcm.mat) usando su función IIR_filter() según el siguiente script.

1 % Filtrado iir
2 % Creando estado del filtro
3 yBuff = [0,0];
4 for i=1:dataLength
5 % [yNew(k) yNew(k-1)] = IIR_filter([yOld(k) yOld(k-1)], [a1 a2], x))
6 yBuff = IIR_filter(yBuff, aCoeff, pcm(i));
7 filtered_pcm(i) = yBuff(1);
8 end

(2pto) Muestre el segmento de código de su función IIR_filter().


(2pto) Aplique su filtro a la señal filtered_pcm para eliminar el ruido de fondo y rescatar el tono pulsante
usando r = 0.99.
Indique la frecuencia del tono, los coeficientes ak usados, y muestre el espectro de la señal antes y después
del filtro.
3

II. D ISE ÑO DE FILTROS FIR USANDO VENTANAS


Considere el filtro pasa-bajo ideal con una frecuencia de corte wc , el cual tiene una respuesta de frecuencia dada
por: 
1, |w| ≤ wc
Hideal (w) = , (2)
0, wc ≤ |w| ≤ π
y una respuesta a impulso dada por:
wc  nw 
c
hideal [n] = sinc (3)
π π
para −∞ ≤ n ≤ ∞. Una aproximación razonable a este filtro es truncar su respuesta a impulso y asumir que
es cero fuera de un rango n ∈ [−M, M ]. Junto a esto se suele considerar un desplazamiento en el tiempo de
la respuesta de impulso para lograr que el filtro resultante sea causal. La respuesta de frecuencia de dicho filtro
truncado está dada por la convolución de Hideal (w) con la DTFT de la ventada usada para truncar la respuesta a
impulso y un retardo lineal en la fase dado por el desplazamiento. Si la ventana fuera infinita, su DTFT serı́a un
impulso y la convolución no afectarı́a a la respuesta en frecuencia ideal.
En consecuencia, para analizar qué tan lejos resulta la respuesta del filtro FIR real respecto al pasabajos ideal,
basta con analizar la DTFT de las ventanas usadas. El roll-off del filtro tendrá directa relación con el ancho del
mainlobe de las DTFT y el rizado en las bandas de paso y rechazo con los sidelobes.

1) Considere un truncamiento con una ventana rectangular, de modo que el filtro resultante está dado por:
 w
sinc wπc n − N 2−1 , n = 0, 1, ..., N − 1

c
h[n] = π , (4)
0, otro caso
(2pto) Obtenga la magnitud H(w) y la fase ∠H(w) para un filtro de frecuencia de corte wc = 2π
3 , con largos
N = 21, 101, 1001, utilizando la función DTFT.m con una resoluciónn no menor a 512 para cada caso. ¿En
qué afecta el largo de la ventana en la respuesta de frecuencia del fitro y la fase?

2) Compare las propiedades temporales y espectrales de filtros FIR construidos con los siguientes tipos de ven-
tanas: rectangular, hamming, hanning, blackman, y bartlett. Para ello utilice para cada ventana una frecuencia
de muestreo de 1 kHz y una duración de 100 ms. Utilice los comandos f reqz , rectwin, hann, hamming,
blackman, y bartlett.
(2pto) Grafique en un figura usando subplots las cinco ventanas.
(2pto) Grafique la magnitud y fase con respecto a la frecuencia de estas ventanas.
(2pto) Cree una tabla con el ancho del mainlobe y su amplitud relativa al primer sidelobe. Comente las ventajas
y desventajas de cada ventana y discuta posibles ejemplos donde cada filtro podrı́a ser mejor que los demás.

III. D ISE ÑO DE FILTROS FIR USANDO HERRAMIENTAS DE MATLAB


Estudiar los comandos f ir1, f ir2 y f irpm de MATLAB. Comente las principales caracterı́sticas de cada uno
de ellos.
1) (4pto) Diseñe un filtro pasa-bajos de orden 70 con frecuencia de corte en 3 kHz y frecuencia de muestreo
16 kHz, empleando el método por ventanas usando el comando f ir1, (use ventanas blackman, y rectangular).
Analice similitudes y diferencias empleando las herramientas de f datool que estime más pertinentes. Grafique
usando la función de Matlab f reqz .

2) (2pto) Obtenga los coeficientes para un filtro de orden 70 y de orden 150 para el filtro de la Fig. 3. utilizando
el comando f ir2. Compare la respuesta de magnitud obtenida con las especificaciones establecidas para cada
caso.
3) (2pto) Exlique qué realiza el comando f irpm, como se usa y qué parámetros debe entregar para diseñar un
filtro FIR. Se le recomienda revisar primero el comando f irpmor .
4

Amplitud
0.5

PSfrag replacements 0

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1


Frecuencia Normalizada

Figure 3. Respuesta del filtro a diseñar con f ir2 y fs = 16 16kHz.

IV. D ISE ÑO DE FILTROS IIR MEDIANTE HERRAMIENTAS DE MATLAB


Utilice el comando f reqz para obtener la respuesta en frecuencia de los siguientes filtros. Para todos los casos
en este punto asuma una frecuencia de muestreo de 16 kHz.
1) (4pto) Utilizando la función ellip de MATLAB diseñe un filtro para cada uno de los siguientes casos,
indicando los parámetros que eligió:
a) Pasa bajos de orden 2 (fc = 2 kHz).
b) Pasa altos de orden 2 (fc = 4 kHz).
c) Pasa banda de orden 4 (f1 = 2 kHz, f2 = 4 kHz). Cuide no duplicar el oden del filtro al usar ellip.
d) Elimina banda de orden 4 (f1 = 2 kHz, f2 = 4 kHz). Cuide no duplicar el oden del filtro al usar ellip.

2) (2pto) Utilizando la función ChebyX de MATLAB diseñe un filtro de cuarto orden para cada uno de los
siguientes casos (pasa banda f1 = 2 kHz, f2 = 4 kHz) :
a) 2 dB para la banda de paso (Cheby1).
b) 20 dB de atenuación (Cheby2).

3) (2pto) Diseñe un filtro Butterworth pasabanda con frecuencias entre 800 Hz y 1600 Hz de orden 4. Cuide no
duplicar el oden del filtro al usar butter.
(2pto) Analice y explique qué sucede con los polos y ceros del sistema a medida que aumenta el or-
den del filtro. ¿Qué implicancias tiene esto en relación con la implementación en la tarjeta LCDK?. Use
[z,p,k]=butter() y zplane.

V. C OMPARACI ÓN DE DISE ÑOS ÓPTIMOS DE FILTROS FIR E IIR


Diseñe filtros IIR del tipo Butterworth, Chebyshev, y Elliptic, junto con un filtro FIR del tipo equiripple en
MATLAB para las siguientes especificaciones de un filtro pasa-banda:
• Passband frequency, fp = 2.4 kHz,
• Stopband frequency, fsp = 4 kHz,
• Sampling frequency, fs = 16 kHz,
• Pass band ripple, Rp = 0.5 dB,
• Stop band, Rs = 40 dB o mayor.
1) (2pto) Use los comandos de MATLAB buttord, cheb1ord, ellipord, y firpmord para determiner
el orden óptimo más bajo para las especificaciones dadas. ¿Qué filtro IIR tiene el orden más bajo? ¿Cómo se
compara el orden de los filtros FIR con los IIR?. Muestre solo una tabla comparativa en su informe (no es
necesario mostras respuestas en frecuencia).
Informe de Laboratorio:
Presente sus cálculos, ecuaciones y los gráficos requeridos. Comente sus observaciones y etiquete sus gráficos
adecuadamente. Los códigos archivos generados para el informe deberán ser enviados vı́a email.

GCR/MZS/CRM

También podría gustarte