Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Donde Apass es el mximo valor de rizado de la banda de paso, Astop la atenuacin en la banda de rechazo. La
banda de transicin formada por las frecuencias de borde Fpass y la frecuencia de rechazo Fstop.
Filtro Pasa-Alto
Aqu vemos a Fs/2 como la mxima frecuencia de paso debido al muestreo de la seal.
Filtro Rechaza-Banda
Mtodos de Diseo
En esta prctica utilizaremos el mtodo de las ventanas para el FIR y el de la transformacin bilineal, embebidas
en las funciones que detallamos a continuacin.
= =
/2 /2
Donde Fs es la frecuencia de muestreo y Ts su recproco, es decir el perodo de muestreo. Ts=1/Fs
FUNCIONES
FUNCIN FIR1
>> B = fir1(N,Wn,type,window);
Disea un filtro FIR pasa bajo de orden (longitud N+1) y frecuencia de corte (normalizada con respecto a
la frecuencia de Nyquist, 0 Wn 1). Se pueden especificar otro tipo de filtros de la misma forma que con los
filtros IIR mediante el parmetro . Por ejemplo, para un filtro parabanda:
>> B = fir1(N,[W1 W2],'stop');
Por defecto la funcin FIR usa la ventana de . Otro tipo de ventanas pueden tambin especificarse:
>> B = fir1(N,Wn,bartlett(N+1));
>> B = fir1(N,Wn,'high',chebwin(N+1,R));
Se pueden indicar saltos bruscos en la respuesta frecuencial duplicando el valor de la frecuencia de corte.
debe
estar entre 0 y 1, en orden creciente, siendo el primer elemento igual a 0 y el ltimo 1. El parmetro
indica el tipo de ventana a utilizar. Por defecto, usa la ventana de .
>> B = fir2(N,F,M,bartlett(N+1));
Se pueden especificar ms parmetros en esta funcin,
>> B = fir2(N,F,M,npt,lap,window);
La funcin 2 interpola la respuesta frecuencial deseada (, ) con puntos (por defecto, =512). Si dos
valores sucesivos de son iguales, se crea una regin de lap puntos alrededor de este punto (por defecto,
=25).
Funcin FIRLS
>> B = firls(N,F,M);
es un vector que indica los lmites de las bandas de frecuencia en parejas (por tanto el tamao de debe ser
par), y en orden ascendente entre 0 y 1. es un vector del mismo tamao que que indica la magnitud deseada
Algoritmo de Parks-McClellan
Hay dos funciones en MATLAB para realizar este algoritmo: y .
>> [N,Fo,Mo,W] = remezord(F,M,DEV,Fs)
Calcula el orden
, las bandas de frecuencia normalizadas , las magnitudes en esas bandas y los factores
de ponderacin que luego sern utilizados como argumentos de entrada de la funcin . Estos valores
cumplen las especificaciones dadas por , , . es un vector de frecuencias de corte en Hz, en orden
ascendente entre 0 y /2. Si no se especifica , = 2 por defecto.
El primer elemento de es siempre 0 y el ltimo es siempre /2, pero no deben ser especificados en el vector
. El vector indica la respuesta deseada en cada banda. Por tanto, el vector tiene un tamao igual a
(() + 2)/2. es un vector que indica el mximo rizado permitido en cada banda.
>> B = remez(N,Fo,Mo,W);
Ejemplo 1
Estimar la longitud de un filtro FIR con fase lineal con las siguientes especificaciones: flanco de la banda de paso
= 180 Hz, flanco de la banda de rechazo = 200 Hz, rizo de la banda de paso Rp = 0.002 y rizo de la banda de
rechazo Rs = 0.001, con razn de muestreo de 12 KHz.
Solucin.
Como (= 180 ) < (= 200 ) se trata de un filtro pasa-bajas. Para determinar la longitud del filtro
FIR con un programa en MATLAB, se puede usar la frmula de Kaiser o la funcin . Con la funcin
:
[ord,f,m,wgt] = remezord(fedge,mag,dev,FT)
Su codificacin en MATLAB queda:
MATLAB posee las funciones que ya nombramos para el diseo de este tipo de filtros. Estas funciones son: 1
y 2, y el formato en el que se usan estas es:
>> b = fir1(L,Wn,window)
Para disear filtros de pasoalto, pasabanda y parabanda se siguen las mismas reglas que en el diseo de
filtros de Butterworth.
Aadiendo a los comandos anterior la opcin , los vectores B y A son los coeficientes del filtro analgico
correspondiente. Sigue siendo vlido lo que se mencion anteriormente acerca del diseo de filtros pasoalto,
pasabanda y parabanda, pero Wn puede tomar cualquier valor en radianes (no est limitado entre (0,1)):
Ejemplo 2
Omega=[Omega1, Omega2]
>> [num,den]=butter(n,Omega,'stop')
O para el pasabanda
>> [num,den]=butter(n,Omega)
>> H = freqs(B,A,W)
Devuelve el vector H de nmeros complejos, que es la respuesta frecuencial al filtro cuya funcin de transferencia
en s viene dada por B y A. La respuesta frecuencial se evala en los puntos especificados por el vector W en
radianes. Ms opciones en el de MATLAB.
Dibuja la magnitud de la respuesta frecuencial del filtro.
>> plot(W,abs(H))
Dibuja la fase de la respuesta frecuencial del filtro.
>> plot(W,unwrap(angle(H)))
>> H = freqz(B,A,F,Fs)
Calcula retraso de grupo (-d/df) de la funcin de transferencia formada por los polinomios B y A.
>> gd = grpdelay(B,A,F,Fs)
Se evala en los puntos especificados por W en radianes. Para ms opciones de esta funcin ver el de
MATLAB.
>> plot(F,abs(H))
Dibuja la fase de la respuesta frecuencial del filtro.
>> plot(F,unwrap(angle(H)))
Dibuja el retraso de grupo de la funcin de Transferencia Discreta.
>> plot(F,gd)
Ejemplo 3. Disear un filtro digital paso bajo de orden 5 con frecuencia de corte fc=1.3 KHz, por el mtodo de
Yule-Walker. Calcular las atenuaciones a 1 KHz y 2 KHz.
Solucin.
Primero hay que elegir una frecuencia de muestreo. Tomamos fs=5 KHz.
>> F=0:10:2500;Fs=5000;
>> Hz = freqz(B,A,F,Fs);
>> semilogy(F,abs(Hz));
APLICACIN DEL FILTRO A UNA SEAL TEMPORAL
Finalmente, cuando diseemos un filtro digital nos interesar poder aplicar ese filtro a una seal temporal. Eso
se consigue con la funcin de MATLAB .
>> y = filter(B,A,x)
El vector x es la entrada y el vector y es la salida filtrada. B y A son los coeficientes del filtro digital.
Existe otra funcin llamada , que funciona de la misma manera que , pero hace dos filtrados.
Primero filtra el vector x, y su respuesta la rota y le vuelve a aplicar el mismo filtro. La respuesta final evita la
distorsin de fase propia de los filtros IIR. Ms detalles en el de MATLAB.
>> y = filtfilt(B,A,x)
METODOS DE DI- Aproximacin directa de la respuesta en magnitud a tra- Mtodo basado en filtros analgicos mediante:
SEO vs de la respuesta al impulso, mediante: Invarianza al impulso
Ventanas Transformacin bilineal
Muestreo en frecuencia
ESTIMACIN DEL Formula de Kaiser Basado en el orden del filtro analgico prototipo.
ORDEN DEL FIL-
MATLAB: MATLAB:
TRO
[ord,f,w,wgt]=remezord(fedge,meg,dev) [N,Wn]=filtord(Wp,Ws,Rp,Rs)
CLASES DE FIL- Pasabajos, pasa-altos, pasabanda, rechazo de banda, Pasabajos, pasa-altos, pasabanda, rechazo de
TROS peine (comb filter) y de fase lineal. banda, peine (comb filter) y pasatodo.
TIPO DE RES- Ventanas fijas: Polinomio de:
PUESTA (EN FRE-
Rectangular Butterworth
CUENCIA Y EN
Hamming Chebyshev I
TIEMPO) DE FIL-
TROS Hanning Chebyshev II
Blackman Eliptico
Ventanas ajustables:
Kaiser
TIPOS DE ES- Forma directa Forma directa
TRUCTURAS BA-
Cascada Cascada
SICAS PARA LA
REALIZACION DE
FILTROS DIGITA-
LES
Diseo 1
Ejemplo de Diseo de un Filtro de paso bajo usando las frmulas anteriores.
Nos quedara Wc=0.02, Ws=0.1 (supongo 25 Hz), 1 de atenuacin en la banda de paso en dB (Es decir cero), y
60 db en la banda de rechazo.
[N,Wn]=buttord(0.02, 0.08, 0.5, 60); %Nos d el orden y frec. de corte del filtro
[num,den]=butter(N,Wn); %Calcula los coeficientes del numerador y denominador del filtro.
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 la Fs elegida.
%plot(F,abs(Hlp))
%plot(F,unwrap(angle(Hlp)))
%plot(F,unwrap(angle(Hlp)))
semilogy(w/pi,abs(Hlp)) %Escala logaritmica de amplitud
grid
H = 20*log10(abs(Hlp));
figure(5)
plot(w/pi,H)
axis([0 1 -60 5]);
ylabel('Ganancia en dB');
xlabel('Frecuencia normalizada: w/pi');
t=0:1/500:1-1/500; %Creo una seal de muestra
x=sin(2*pi*1*t); %Asigno esos valores calculados al vector x
figure(2)
plot(t,x) %Muestro Seal original
y=x+0.1*randn(size(t)); %Sumo ruido gaussiano de varianza 0.1
figure(3)
plot(t,y) %Muestro la seal con ruido
figure(4)
%stem(t,y)
Sal=filter(num,den,y) %Aplico el filtro diseado a la seal de prueba.
plot(t,Sal) %Muestro la seal Filtrada
Diseo 2
Obtener la funcin de transferencia y graficar la respuesta en frecuencia de un filtro digital IIR pasa-bajas elptico
de 5 orden con frecuencia de paso de 0.4, y rizo de paso de 0.5 dB, y atenuacin mnima en la banda de rechazo
de 40 dB.
clear;
w=0:pi/255:pi; %Barrido de frecuencia
N = 5;
Rp = 0.5;
Rs = 40;
Wn = 0.4;
[b,a] = ellip(N,Rp,Rs,Wn);
disp('Polinomio del numerador:'); disp(b);
disp('Polinomio del denominador:'); disp(a);
% Obtencin de la respuesta en frecuencia
h = freqz(b,a,w);
H = 20*log10(abs(h));
ph = angle(h)*180/pi;
% Graficacin de la respuesta en frecuencia
figure(1);
subplot(211);
plot(w/pi,H);
axis([0 1 -60 5]);
ylabel('Ganancia en dB');
xlabel('Frecuencia normalizada: w/pi');
grid;
subplot(212);
plot(w/pi,ph);
ylabel('Fase en grados');
xlabel('Frecuencia normalizada: w/pi');
grid;
% Detalle de la respuesta en frecuencia ****************
figure(2);
plot(w/pi,H);
axis([0 0.5 -3.5 0.5]);
ylabel('Ganancia en dB');
xlabel('Frecuencia normalizada: w/pi');
grid