Universidad Tecnológica Nacional Facultad Regional San Nicolás Técnicas Digitales III Trabajo Práctico nro. 6 FILTROS con MATLAB Rev.2015 Trabajo Práctico 6 OBJETIVO: Conocer las herramientas que este software posee para el diseño de filtros tanto analógicos como digitales para afianzar los conocimientos vistos en clase. Comparar entre distintos filtros digitales y a su vez con su par analógico. Determinar los parámetros de un filtro y observar como podría ayudarnos a encontrar los coeficientes que luego podremos usar al programar un microprocesor. Trabajo Práctico 6 ELEMENTOS: MatLab y la guía suministrada por la cátedra. Esta información está disponible en nuestra web, apartado “Prácticos”: http://www.frsn.utn.edu.ar/tecnicas3/ Trabajo Práctico 6 DESARROLLO: Reseña de utilización de MatLab : “Signal Processing Toolbox” Método de ventanas para el diseño de filtros FIR Sección DISEÑO: FILTROS IIR con MATLAB Funciones para determinar los coeficientes del filtro >>[N, Wn] = cheb1ord(Wp, Ws, Rp, Rs) >>[B,A] = butter(N,Wn) >>[B,A] = butter(N,[W1 W2],’stop’) Sección DISEÑO: FILTROS FIR con MATLAB Función FIR1 >> B = fir1(N,Wn,type,window); >> B = fir1(N,[W1 W2],'stop'); >> B = fir1(N,Wn,bartlett(N+1)); >> B = fir1(N,Wn,'high',chebwin(N+1,R)); Función FIR2 >> B = fir2(N,F,M,window); Diseña un filtro FIR utilizando el método del muestreo frecuencial. Se pueden especificar más parámetros en esta función, Función FIRLS >> B = firls(N,F,M); Sección DISEÑO: Respuesta frecuencial del filtro y aplicación del mismo a la señal de prueba >> 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 frecuencial se evalúa en los puntos especificados por el vector F en Hz, siendo la frecuencia de mustreo Fs Hz. Más opciones en el Help de MATLAB. Aplicación del filtro a la señal de prueba temporal: >> y = filter(B,A,x) >> y = filtfilt(B,A,x) Diseño 1A Ejemplo de Diseño de un Filtro de paso bajo usando las fórmulas anteriores: En el siguiente ejemplo vemos la respuesta típica de un filtro pasa bajos que diseñaremos a continuación: Se pretende diseñar un Filtro de paso bajo para extraer una señal de 1000Hz que ha contaminado una señal de 1 Vpp de 2000 Hz. Las señales fueron muestreadas con una fm=8KHz. clear all; %**********Diseño del filtro********** [N,Wn]=buttord(1500/(8000/2), 1700/(8000/2), 0.5, 60); %Nos dá el orden y frec. De corte del filtro %[num,den]=butter(12,1500/4000); %Calcula los coeficientes del numerador y denominador del filtro. [num,den]=butter(N,Wn); w=0:pi/255:pi; %Hacemos variar la frecuencia entre 0 y pi. Barrido figure(1) Hlp=freqz(num,den,w); %Calcula la respuesta en frecuencia del filtro para ls Fs elegida. semilogy(w/pi,abs(Hlp)) %Escala logaritmica de amplitud grid H = 20*log10(abs(Hlp)); figure(2) plot(w/pi,H) axis([0 1 -60 5]); ylabel('Ganancia en dB'); xlabel('Frecuencia normalizada: w/pi'); pause; %**********imulación del diseño********* %Definicion frec. de muestreo y barrido temporal para las señales a simular fm = 8000; tm = inv(fm); N = 8000; t = 0:tm:tm*(N-1); Continuación diseño ejemplo 1: x=sin(2*pi*2000*t); xr=sin(2*pi*1000*t); y=x+xr; subplot(311) plot(t,y) % Crea la señal de entrada del tipo sinosoidal de 1000Hz % Crea la señal de entrada del tipo sinosoidal de 2000Hz %Señal suma de senoides del problema %Dibuja Señal original %Para Calculo FFT NFFT = 2^nextpow2(N); % Next power of 2 from length of y Y = fft(y,NFFT)/N; f = fm/2*linspace(0,1,NFFT/2+1); subplot(312) plot(f,2*abs(Y(1:NFFT/2+1))) % Muestra la FFT de la señal de entrada title('Espectro de Amplitud y(t)') xlabel('Frecuencia (Hz)') ylabel('|Y(f)|') pause; Continuación diseño ejemplo 1: figure(4); Sal=filter(num,den,y) plot(t,Sal) figure(5) F = fft(Sal,NFFT)/N; plot(f,2*abs(F(1:NFFT/2+1))) xlabel('f (Hz)SALIDA'); ylabel('Amplitud SALIDA'); %Aplica el filtro diseñado a la señal de prueba. %Muestra la señal Filtrada en el tiempo %Muestra el contenido frecuencial de la señal Filtrada. Salidas del ejemplo: Diseño del filtro Salidas del ejemplo: Señales de simulación Salidas del ejemplo: Aplicación del filtro diseñado a la señal de simulación. Enunciado Trabajo Práctico 6 OBJETIVO: Familiarizarse con el diseño de filtros digitales. ELEMENTOS: Se utilizará Matlab y la guía suministrada por la cátedra. DESARROLLO: 1) Explicación del ejemplo del diseño 1A A- Verificar el orden del filtro que necesitaríamos en caso de usar un filtro FIR: [N, f, m, wgt] = remezord([1500 1700], [1 0], [0.001 0.02], 8000) B- Comprobar el orden utilizando la fórmula en el caso analógico. C- Encontrar el orden del filtro utilizando otros dos métodos de filtros IIR. Enunciado Trabajo Práctico 6 2) Corra el Diseño 1A. A- Cambie algunos parámetros de los coeficientes de la fórmula y vuelva a graficar. B- Pruebe el mismo ejemplo pero a través de un FIR , use el calculado en el item1-A. %Calculamos los coeficientes del filtro, f=remez(N,f,m) w=0:pi/255:pi; %Hacemos variar la frecuencia entre 0 y pi. Barrido figure(1) Hl=freqz(f,1,w); plot(w/pi,abs(Hl)) % Graficamos la rta en frec. O podremos hacer bfir1=fir1(N,0.02) H2=freqz(bfir1,1,w); plot(w/pi,abs(H2)) Sal2=filter(bfir1,1,y); plot(t,Sal2) Enunciado Trabajo Práctico 6 C- Aumente el orden del filtro FIR y grafique las salidas nuevamente. Observe como cambia la salida del filtro. D- Pruebe conseguir un resultado similar con los IIR. E- Elabore conclusiones de acuerdo a los resultados hallados. 3) Utilización de la función fir2 Esta función nos permite seleccionar la respuesta frecuencial del filtro. Ejemplo, filtro pasa bajo: f = [0 0.6 0.6 1]; m = [1 1 0 0]; b = fir2(30,f,m); [h,w] = freqz(b,1,128); plot(f,m,w/pi,abs(h)) legend('Ideal','Diseño fir2') title('Comparación entre respuestas en frecuencia') Utilice esta función para aplicarla al diseño 1. Grafique. Enunciado Trabajo Práctico 6 4) Un filtro pasabanda debe tener las siguientes especificaciones: Pasabanda: 5 KHz-8 KHz Parabanda: 4 KHz-10 KHz Rizado de Pasabanda: <1dB Atenuación de Pasabanda: >60dB Frecuencia de Muestreo 22 KHz Diseñar un filtro digital por los siguientes métodos: a. Filtro IIR de Chebyshev I utilizando la transformación bilineal. b. Filtro FIR por el método de Parks-McClellan. c. Filtro FIR por el método de las series de Fourier, eligiendo la ventana espectral más adecuada. 5) Diseñe un filtro pasa-banda de orden N=6 con frecuencia de paso de 300 y 500 Hz , suponiendo que la señal de entrada será muestrada a una frecuencia de 8192 Hz..Represente H(w). Considere que la señal de entrada esta formada por la suma de tres señales sinusoidales de frecuencia 100,400 y 600 Hz respectivamente. Usando la función filter compruebe que a la salida ha desaparecido la componente de 100 y de 600 Hz. Universidad Tecnológica Nacional Facultad Regional San Nicolás Técnicas Digitales III Fin de la presentación Visítenos en: http://www.frsn.utn.edu.ar/tecnicas3