INFORME2

Filtro digital de audio butterworth utilizando  MATLAB dispone de funciones que facilitan el diseño de filtros, tanto

Views 134 Downloads 0 File size 161KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

  • Author / Uploaded
  • luis
Citation preview

Filtro digital de audio butterworth utilizando



MATLAB dispone de funciones que facilitan el diseño de filtros, tanto analógicos como digitales. Lo primero que necesitamos saber a la hora de diseñar un filtro Butterworth es conocer el orden, para ello disponemos de la función [N,Wn]= buttord(Wp,Ws,Rp,Rs) donde: Wp es la frecuencia de corte normalizada



Ws es la frecuencia de atenuación normalizada



Rp la atenuación para la frecuencia de corte en dB



Rs la atenuación para la banda rechazada en dB

Función de transferencia para un filtro pasa bajas

Wp y Ws deben ser entre (0 y 1) siendo 1 la frecuencia de Nyquist( esto nos dice que hay que normalizar las frecuencias contra la frecuencia de Nyquist). la salida N es el orden del filtro y Wn la frecuencia de 3dB. Si queremos encontrar el orden del filtro pero analógico es tan sencillo como modificar la función [N,Wn]= buttord(Wp,Ws,Rp,Rs,'s') aquí las frecuencias de Wp y Ws pueden toma cualquier valor en radianes. Lo siguiente es calcular los coeficientes del filtro, esto lo haremos utilizando la función[B,A] = butter(N,Wn) B y A son los coeficientes del numerador y denominador respectivamente. Y como es lógico N es el orden del filtro y Wn la frecuencia de corte, calculadas previamente. Además es necesario especificar si queremos un filtro pasa altas o pasa bajas, rechaza banda o, pasa bandas. Esto lo haremos de la siguiente manera:  

Filtro pasa bajas: [B,A] = butter(N,Wn,'low') Filtro pasa altas: [B,A] = butter(N,Wn,'high')





Filtro pasa bandas: [B,A] = butter(N,[W1 W2]) Wn en este caso es un vector que especifica las frecuencias de pasabanda. Filtro rechaza banda: [B,A] = butter(N,[W1 W2],'stop') Añadiendo a los comandos anteriores la opción 's', los vectores B y A son los coeficientes del filtro analógico correspondiente. Sigue siendo valido lo que se ha mencionado con el handicap que Wn no está limitada a un valor dentro del rango (0,1). Veamos un ejemplo con un audio DEMO de MATLAB. load handel.mat y = y'; Wp = 1000/Fs; %%Frecuencia de corte normalizada Ws = 2000/Fs; %%Frecuencia de atenuación normalizada [n,Wn] = buttord(Wp,Ws,3,60); %%orden de butterworth [b,a] = butter(n,Wn,'low'); %%coeficientes de butterworth yh = filter(b, a, y); %%Filtro de la señal L=length(y); NFFT = 2^nextpow2(L); % Siguiente potencia de 2 del vector y f = Fs/2*linspace(0,1,NFFT/2+1); figure(1) yf=fft(y,NFFT)/L; plot(f,2*abs(yf(1:NFFT/2+1))) title('Espectro de la señal') xlabel('Frecuencia [Hz]') grid on figure(2) yf2=fft(yh,NFFT)/L; plot(f,2*abs(yf2(1:NFFT/2+1))) title('Espectro de la señal filtrada') xlabel('Frecuencia [Hz]') grid on figure(3) [H,W] = freqz(b,a,1000); plot(Fs.*W./pi,abs(H)) title('Respuesta en frecuencia del filtro') xlabel('Frecuencia [Hz]') grid on sound(yh) sound (y)

La función [H,W] = freqz(b,a,N) retorna el vector H de N-puntos de la respuesta en frecuencia y el vector de frecuencia de N-puntos W en radianes/muestra del filtro. Observen unas gráficas del filtro que acabamos de realizar

Estos filtros son muy útiles para eliminar componentes de ruido de alta y baja frecuencia que se introducen por interferencia o mala calidad de equipos.