prac7_dsp
TRANSCRIPT
Practica 7
Diseño de Filtros DigitalesReyes López Misael, González Arevalo Elfrich, Ruiz Pérez Christian
ResumenEn esta práctica se realizaron varios tipos de filtros con funciones de Matlab
específicas para ello, como por ejemplo, el "butter" que es un filtro Butterworth y lafunción "cheby1" que implementa un filtro Chebyshev en configuración de pasa altas,pasa bajas y pasabanda en ambos filtros obteniendo su respuesta al impulso y sudiagrama de polos.
IntroducciónEl término filtro digital lo entenderemos como cualquier procesamiento realizado en
una señal de entrada digital.Un filtro digital es la implementacion en hardware o software de una ecuacion en
diferencia.Ventajas de los filtros digitalesAlta inmunidad al ruidoAlta precisiónFácil modificación de las caracteristicas del filtroMuy bajo coste
[B,A]=butter(N,Wn)B y A son los coeficientes del numerador y del denominador respectivamente, en
orden decreciente de un filtro de Butterworth digital. N es el orden del filtro y Wnes la frecuencia de corte. El valor de Wn debe estar normalizado con la frecuencia
de Nyquist. Para diseñar un filtro paso bajo Wn es un escalar entre (0,1). El pasabanda es (0,Wn).[B,A]=cheby1(N,R,Wn)Diseño de filtros digitales de Chebyshev I. Se deben especificar el orden del filtro N,
el rizado de pasabanda permitido R y la frecuencia de corte normalizada conrespecto a la frecuencia de Nyquist.
H = freqz(B,A,F,Fs)Devuelve el vector H de números complejos, que es la respuesta frecuencial al filtro
cuya función de transferencia en z viene dada por B y A. La respuesta frecuencialse evalúa en los puntos especificados por el vector F en Hz, siendo la frecucuencia
de muestreo Fs en Hz.
Problema 1Ralice un programa en Matlab para un filtro Butterworth pasabajas,pasa altas y pasa
banda.
Código
function y=filtros(N,R,Wn,Wn1,Wn2,F)[Bb,Ab] = butter(N,Wn,’high’);[Bb1,Ab1] = butter(N,Wn1,’low’);[Bb2,Ab2] = butter(N,Wn2,’bandpass’);[Hb,Wb] = FREQZ(Bb,Ab,F,N);[Hb1,Wb1] = FREQZ(Bb1,Ab1,F,N);[Hb2,Wb2] = FREQZ(Bb2,Ab2,F,N);figureFREQZ(Bb,Ab,F,N)title(’Butterworth Pasa Altas’)figureFREQZ(Bb1,Ab1,F,N)title(’Butterworth Pasa Bajas’)figureFREQZ(Bb2,Ab2,F,N)title(’Butterworth Pasa Banda’)
Ejemplos
Para el filtro butterworth con entrada filtros(1,.5,.7,.7,[.5 .9],50) tenemos:
Pasa bajas.
Figura 1. Respuesta en magnitud y fase del filtro pasa bajas butterworth.
Pasa altas.
Figura 2. Respuesta en magnitud y fase del filtro pasa altas butterworth.
Pasa banda.
Figura 3. Respuesta en magnitud y fase del filtro pasa banda butterworth.
Problema 2Ralice un programa en Matlab para un filtro Chebyshev pasabajas,pasa altas y pasa
banda.
Código
[B,A] = CHEBY1(N,R,Wn,’high’);[B1,A1] = CHEBY1(N,R,Wn1,’low’);[B2,A2] = CHEBY1(N,R,Wn2,’bandpass’);[H,W] = FREQZ(B,A,F,N);[H1,W1] = FREQZ(B1,A1,F,N);[H2,W2] = FREQZ(B2,A2,F,N);figureFREQZ(B,A,F,N)title(’Chebyshev Pasa Altas’)figureFREQZ(B1,A1,F,N)title(’Chebyshev Pasa Bajas’)figureFREQZ(B2,A2,F,N)title(’Chebyshev Pasa Banda’)figureH = tf(1,A2) % Transfer functionh = impulse(1,A2,F); % Impulse Responses = step(1,A2,F); % Step Responset = linspace(0,F,length(h));plot(t,h)
xlabel(’Tiempo’)ylabel(’Amplitud’)title(’Respuesta al impulso normalizada (Chevyshev)’)
Ejemplos
Para el filtro chebyshev con entrada filtros(1,.5,.7,.7,[.5 .9],50) tenemos:
Pasa bajas.
Figura 4. Respuesta en magnitud y fase del filtro pasa bajas chebyshev.
Pasa altas.
Figura 5. Respuesta en magnitud y fase del filtro pasa altas chebyshev.
Pasa banda.
Figura 6. Respuesta en magnitud y fase del filtro pasa banda chebyshev.
Problema 3.
Tomando el ejemplo anterios la respuesta al impulso para el filtro Butterworth se
describe como:
Pasa bajas.Codigo:
Hb = tf(1,Ab1) % Transfer functionhb = impulse(1,Ab1,F); % Impulse Responsesb = step(1,Ab1,F); % Step Responsetb = linspace(0,F,length(hb));plot(tb,hb)xlabel(’Tiempo’)ylabel(’Amplitud’)title(’Respuesta al impulso normalizada (Butterworth)’)
Figura 7. Respuesta impulsional del filtro butterworth pasa bajas
Pasa Altas.
Codigo:Hb = tf(1,Ab) % Transfer functionhb = impulse(1,Ab,F); % Impulse Responsesb = step(1,Ab,F); % Step Response
Figura 8. Respuesta impulsional del filtro butterworth pasa altas.
Pasa Banda.Codigo:
Hb = tf(1,Ab2) % Transfer functionhb = impulse(1,Ab2,F); % Impulse Response
sb = step(1,Ab2,F); % Step Response
Figura 9. Respuesta impulsional del filtro butterworth pasa banda.
Problema 4.Respuesta al impulso para el filtro Chebyshev
Pasa BajasCódigo
H = tf(1,A1) % Transfer functionh = impulse(1,A1,F); % Impulse Responses = step(1,A1,F); % Step Responset = linspace(0,F,length(h));plot(t,h)xlabel(’Tiempo’)ylabel(’Amplitud’)title(’Respuesta al impulso normalizada (Chevyshev)’)
Figura 10. Respuesta impulsional del filtro chebyshev pasa bajas.
Pasa AltasCódigo
H = tf(1,A) % Transfer functionh = impulse(1,A,F); % Impulse Responses = step(1,A,F); % Step Response
Figura 11. Respuesta impulsional del filtro chebyshev pasa altas.
Pasa BandaCódigo
H = tf(1,A2) % Transfer function
h = impulse(1,A2,F); % Impulse Responses = step(1,A2,F); % Step Response
Figura 12. Respuesta impulsional del filtro chebyshev pasa banda.
Problema 4.
*Respuesta al impulso para el filtro Butterworth
Pasa Bajas,Pasa Altas y Pasa Banda.Código
figurezplane(Bb1,Ab1)title(’Diagrama de polos y ceros (Pasa-Bajas)’)figurezplane(Bb,Ab)title(’Diagrama de polos y ceros (Pasa-Bajas)’)figurezplane(Bb2,Ab2)title(’Diagrama de polos y ceros (Pasa-Bajas)’)
Figura 13. Diagrama de polos y ceros del filtro Butterworth (Pasa-bajas).
Figura 14. Diagrama de polos y ceros del filtro Butterworth (Pasa-altas).
Figura 15. Diagrama de polos y ceros del filtro Butterworth (Pasa-altas).
*Respuesta al impulso para el filtro Chevyshev
Pasa Bajas,Pasa Altas y Pasa Banda.Código
figurezplane(B1,A1)title(’Diagrama de polos y ceros (Pasa-Bajas)’)figurezplane(B,A)title(’Diagrama de polos y ceros (Pasa-Altas)’)figurezplane(B2,A2)title(’Diagrama de polos y ceros (Pasa-Bandas)’)
Figura 16. Diagrama de polos y ceros del filtro chevyshev (Pasa-bajas).
Figura 17. Diagrama de polos y ceros del filtro chevyshev (Pasa-altas).
Figura 17. Diagrama de polos y ceros del filtro chevyshev (Pasa-bandas).
Conclusiones.El uso de filtros en señales discretas proporciona diferentes tipos de respuestas
dependiendo del tipo de filtro y características del mismo, como la ubicción de sus polosy ceros por lo que tener conocimiento de ellos y sus comportamientos ayuda en buenamedida en el diseño de sistemas y su implementación.
Así mismo observamos que aunque las frecuencias de corte en un filtro Chebyshevy en un Butterworth aunque sean iguales tienen comportamientos diferentes en el rizode la banda de paso y en la banda transición.
Bilbliografía.TRATAMIENTO DIGITAL DE SEÑALESPROAKIS, JOHN G. \ MANOLAKIS DIMITRIS G.1998
Anexos
Programa principal de los filtros.
function y=filtros(N,R,Wn,Wn1,Wn2,F)[B,A] = CHEBY1(N,R,Wn,’high’);[B1,A1] = CHEBY1(N,R,Wn1,’low’);[B2,A2] = CHEBY1(N,R,Wn2,’bandpass’);
[H,W] = FREQZ(B,A,F,N);[H1,W1] = FREQZ(B1,A1,F,N);[H2,W2] = FREQZ(B2,A2,F,N);
figureFREQZ(B,A,F,N)title(’Chebyshev Pasa Altas’)
figureFREQZ(B1,A1,F,N)title(’Chebyshev Pasa Bajas’)
figureFREQZ(B2,A2,F,N)title(’Chebyshev Pasa Banda’)
figurezplane(B1,A1)title(’Diagrama de polos y ceros (Pasa-Bajas)’)figurezplane(B,A)title(’Diagrama de polos y ceros (Pasa-Altas)’)figurezplane(B2,A2)title(’Diagrama de polos y ceros (Pasa-Bandas)’)
figureH = tf(1,A2) % Transfer functionh = impulse(1,A2,F); % Impulse Responses = step(1,A2,F); % Step Responset = linspace(0,F,length(h));plot(t,h)xlabel(’Tiempo’)ylabel(’Amplitud’)title(’Respuesta al impulso normalizada (Chevyshev)’)%/———Butterworth[Bb,Ab] = butter(N,Wn,’high’);[Bb1,Ab1] = butter(N,Wn1,’low’);[Bb2,Ab2] = butter(N,Wn2,’bandpass’);[Hb,Wb] = FREQZ(Bb,Ab,F,N);[Hb1,Wb1] = FREQZ(Bb1,Ab1,F,N);[Hb2,Wb2] = FREQZ(Bb2,Ab2,F,N);figureFREQZ(Bb,Ab,F,N)title(’Butterworth Pasa Altas’)
figureFREQZ(Bb1,Ab1,F,N)title(’Butterworth Pasa Bajas’)
figureFREQZ(Bb2,Ab2,F,N)title(’Butterworth Pasa Banda’)figurezplane(Bb1,Ab1)title(’Diagrama de polos y ceros (Pasa-Bajas)’)figurezplane(Bb,Ab)title(’Diagrama de polos y ceros (Pasa-Altas)’)figurezplane(Bb2,Ab2)title(’Diagrama de polos y ceros (Pasa-Bandas)’)
figureHb = tf(1,Ab2) % Transfer functionhb = impulse(1,Ab2,F); % Impulse Responsesb = step(1,Ab2,F); % Step Responsetb = linspace(0,F,length(hb));plot(tb,hb)xlabel(’Tiempo’)ylabel(’Amplitud’)title(’Respuesta al impulso normalizada (Butterworth)’)