1. UNIVERSIDAD POLITECNICA SALESIANA<br />INGENIERIA ELECTRONICA<br />TRABAJO<br />PROCESAMIENTO DIGITAL DE SEÑALES<br />TEMA<br />DIEÑO DE UN FILTRO DE BUTTHERWOTH UTILIZANDO MATLAB<br />INTEGRANTES<br />FRANCISCO JURADO<br />JORGE MORALES<br />ALEX MORENO<br />ALEJANDRO VALENCIA<br />CRISTIAN ZAPATA<br />PERIODO LECTIVO<br />2010 – 2011<br />Objetivo<br />Mostrar la forma de diseñar un filtro pasabandas de Butterworth con la ayuda del software Matlab.<br />Introducción<br />Es muy común el uso de filtros en el procesamiento de señales, es por ello que hay que aprender a utilizar paquetes que faciliten el diseño de filtros analógicos y digitales. En el presente trabajo nos enfocaremos a la implementación de una clase de filtro el pasabanda de Butterworth. <br />Matlab<br />Filtros analógicos Butterworth<br />En Matlab podemos encontrar la instrucción Butter, este comando diseña filtros Butterwoth pasa-bajas, pasa-altas, pasa-bandas y rechaza bandas tanto en forma digital como analógica. Este filtro se caracteriza por una respuesta plana en la banda de transición.<br />En el dominio analógico tenemos dos opciones:<br />La instrucción para generar un filtro del grado que el usuario desee, así como la manipulación de la frecuencia de corte.(esta instrucción genera los polos y ceros necesarios)<br />El comando para que a partir del grado, tipo y amortiguamiento, se obtengan los polos, zeros y ganancia que pueda tener el filtro.<br />Ambas opciones generan los coeficientes de s de la función de transferencia:<br />A continuación diseñaremos un filtro pasabanda de 4 Hz a 6 Hz y el resultado de ingresar una señal y pasarla por el filtro.<br />Código en Matlab<br />Primero definimos las características que va a tener la señal y el filtro en tiempo, frecuencia atenuación.<br />% Definimos el periodo de la señal en un valor de 0.01 seg<br />pas=0.01;<br />t=0:pas:10;<br />% Definimos la frecuencia de muestreo que es el inverso del periodo de la señal adema de la frecuencia de corte que es el inverso de la frecuencia de muestreo la cual va a ser utilizada en nuestro filtro y resulta el inverso del periodo de la señal.<br />fm=1/pas;<br />fs=fm/2;<br />% Definimos la banda de paso y de corte de nuestro filtro<br />wp=[5 20]/fs;<br />ws=[1 24]/fs;<br />% Establecemos los valores de rp (valor de la tolerancia de nuestro filtro) y de rs (valor de la atenuación de la banda eliminada) <br />rp=2;<br />rs=10;<br />% Definimos la señal la cual vamos a utilizar para pasar por el filtro de butterworth <br />senal=sin(10*pi*t)+cos(15*t+t.^2);<br />% Graficamos la señal de muestra<br />% Definimos el eje de tiempo de nuestra señal<br />ejet=[0:pas:(length(senal)-1).*pas];<br />subplot(4,1,1);<br />plot(ejet,senal);<br />axis([ min(ejet) max(ejet) min(senal) max(senal)]);<br />xlabel('t (s)');<br />ylabel('Inpunt(s)')<br />title('Grafico de la senal0')<br />% Graficamos el espectro de la amplitud de la señal de muestra<br />subplot(4,1,2);<br />dim=length(senal).*pas;<br />% Definimos el eje de frecuencia para la gráfica del espectro señal<br />ejefrec=[0:1/dim:(length(senal)-1)/dim];<br />spectr=abs(fft(senal));<br />% Obtenemos la amplitud del espectro de la señal<br />spectr=spectr/max(spectr);<br />plot(ejefrec,spectr);<br />axis([0 10 0 max(spectr)]);<br />xlabel('frecuencia (Hz)');<br />title('Espectro de amplitud de la senal')<br />% Obtenemos el orden del filtro de butterwort y la frecuencia normalizada con la ayuda del comando buttord<br />[n,wn]=buttord(wp,ws,rp,rs);<br />% Con los datos anteriores y con la ayuda del comando butter obtenemos los coeficientes de la función de transferencia para el filtro de butterworth<br />[b,a]=butter(n,Wn);<br />[h,f]=freqz(b,a,[],fm);<br />subplot(4,1,3);<br />plot(f,abs(h));<br />axis([0 10 0 max(spectr)]);<br />xlabel('frecuencia (Hz)');<br />ylabel('|H(z)|');<br />title('Filtro')<br />% Para poder observar el resultado de filtrar nuestra señal de muestra la convolucionamos con el filtro con la ayuda del comando filter.y obtenemos el resultado de la señal filtrada<br />ysig=filter(b,a,senal);<br />subplot(4,1,4);<br />plot(ejefrec,abs(fft(ysig)));<br />axis([0 10 0 500]);<br />xlabel('Frecuencia (Hz)');<br />ylabel('Senal Filtrada (Hz)');<br />title('Senal Filtrada')<br />Resultados Obtenidos<br />El primer gráfico nos muestra la señal que creamos como prueba<br />El segundo grad¡fico nos muestra el espectro de amplitud de la señal.<br />El tercer grafico nos muestra el filtro de buttrerworth.<br />El cuarto grafico nos muestra el resultado de la señal filtrada.<br />Comandos Utilizados<br />Buttord.- con la ayuda de este comando nos es factible calcular el mínimo orden del filtro digital o analógico de Butterworth requerido para satisfacer las especificaciones de diseño del filtro.<br />Dominio Digital<br />Sintaxis<br />[n,Wn] = buttord(Wp,Ws,Rp,Rs)<br />[n,Wn] = buttord(Wp,Ws,Rp,Rs,'s')<br />Descripción de los parámetros para el uso del comando<br />Butter.- este comando nos sirve para el diseño de filtros de orden n.<br />Dominio Digital<br />[z,p,k] = butter(n,Wn)<br />Sintaxis<br />[z,p,k] = butter(n,Wn)<br />[z,p,k] = butter(n,Wn,'ftype')<br />[b,a] = butter(n,Wn)<br />[b,a] = butter(n,Wn,'ftype')<br />[A,B,C,D] = butter(n,Wn)<br />[A,B,C,D] = butter(n,Wn,'ftype')<br />[z,p,k] = butter(n,Wn,'s')<br />[z,p,k] = butter(n,Wn,'ftype','s')<br />[b,a] = butter(n,Wn,'s')<br />[b,a] = butter(n,Wn,'ftype','s')<br />[A,B,C,D] = butter(n,Wn,'s')<br />[A,B,C,D] = butter(n,Wn,'ftype','s')<br />Filter.- esta función nos permite obtener una secuencia de datos utilizando un filtro digital que funciona tanto para la parte real y compleja. El filtro es una forma directa aplicación.<br />Sintaxis<br />y = filter(b,a,X)<br />[y,zf] = filter(b,a,X)<br />[y,zf] = filter(b,a,X,zi)<br />y = filter(b,a,X,zi,dim)<br />[...] = filter(b,a,X,[],dim)<br />Freqz.- devuelve la respuesta de frecuencia del vector h, y el correspondiente vector angular wn frecuencia normalizada para el filtro digital cuya función de transferencia está determinada por los polinomios (reales o complejos) numerador y el denominador representados en la b vectores y uno, respectivamente.<br />Sintaxis<br />[h,w] = freqz(b,a,l)<br />h = freqz(b,a,w)<br />[h,w] = freqz(b,a,l,'whole')<br />[h,f] = freqz(b,a,l,fs)<br />h = freqz(b,a,f,fs)<br />[h,f] = freqz(b,a,l,'whole',fs)<br />freqz(b,a,...)<br />freqz(Hd)<br />Conclusion:<br />En la actualidad existen diversos paquetes para simular sistemas y es necesario saber utilizar los más usados. En fin con este proyecto llegamos a la conclusión que matlab es ideal para ver el comportamiento del filtro sin importar los valores de las resistencias o capacitores que debe llevar el filtro, es más diríamos que es muy fácil diseñar filtros con esta herramienta. Hablando de Simulink concluimos que es una mezcla o correlación entre un software de procesamiento de señales y otro de electrónica, en fin es muy útil cuando se tiene la función de transferencia específica para el filtro deseado.<br />Es útil para simular que componentes debe tener el filtro para su trabajo óptimo, en sí es fácil de usar y de simular.<br />Los tres programas van ligados y la forma de correlacionarlos sería la siguiente:<br />Referencia<br />Manual de procesamiento de señales Toolbox del paquete Matlab<br />