Doctor
Condiciones a cumplir por el filtro (datos del problema)
FS=24000 frecuencia de muestreo
Fp= 3000 frecuencia límite del pasabanda
Fs= 6000 frecuencia límite del stopbanda
Dp = 1 db atenuación máxima en el pasabanda
Ds = 30 db atenuación mínima en el stopbanda
Para adecuar a la función que permite el cálculo del orden del filtro, Fc y Fsdeben llevarse a la forma normalizada
Por lo tanto resulta:
Wp = 3000/12000 = 0.25 Ws = 6000/12000 = 0.5
Resolución del problema
Se calcula primero el orden (N) y la frecuencia de potencia mitad (Ws) (valor de la frecuencia para el cual |H(z)|2 cae a la mitad).
[N, Wn] = buttord(Wp, Ws, Rp, Rs)
[N, Wn] = buttord(0.25, 0.50, 1, 30)
Resultando:
N = 5 Wn =0.2958
Con este resultado previo, se procede al diseño del filtro de Butterworth que cumpla con las características especificadas:
[B,A] = BUTTER(N,Wn)
[B,A] = BUTTER(5,0.2958)
Resultando:
B = [0.0065 0.0327 0.0655 0.0655 0.0327 0.0065 ]
A = [1.0000 -2.0177 2.0732 -1.1455 0.3423 -0.0428 ]
Luego, la función de transferencia, está dada por
Sustituyendo z=exp(j) seobtiene la respuesta en amplitud del filtro, |H()|
Gráficamente (poniendo como eje horizontal )
Matlab dispone de una función específica que permite obtener directamente gráficamente la respuesta en amplitud del filtro.
[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.Luego, ejecutando:
[H,W] = FREQZ(B,A,1000);
plot(W./pi,abs(H))
Se obtiene la misma curva anterior
Si se quiere observar tanto la respuesta en amplitud como la de fase, se procede con la misma función anterior pero si primer miembro.
Con la diferencia que aquí, en la respuesta en amplitud, las magnitudes del eje vertical están dadas en decibeles (db).
También se pueden hacerseparadamente con:
m = abs(H); p = unwrap(angle(H));
semilogy(w/length(w),m); title('Magnitud');
figure; plot(w/length(w),p*180/pi); title('Fase');
Resultando:
Para verificar si se cumplen las condiciones de atenuación, precisamente se necesita que el eje de ordenadas esté en db, lo que se logra redefiniendo a |H(z)| como 20*log(|H(z)|)
Con lo que se puede apreciar que en lafrecuencia de comienzo del stopbanda, la atenuación es de 30 db (el signo negativo indica precisamente atenuación, si fuese positivo sería amplificación)
Para ver que ocurre en el pasabanda, se hará un zoom adecuado.
Como se aprecia, la atenuación en el pasabanda está por debajo de 1 db.
La implementación del filtro, su ecuación diferencia, se puede establecer desde H(z)Antitransformando
Despejando ahora yn
Si al filtro se le inyecta un impulso
La salida se ve gráficamente como:
Mediante Matlab, se puede usar la función filter para realizar esta tarea.
i=1:512;x(i)=0; x(255)=1; % genera el impulso en la mitad % de la secuencia
Y=filter(B,A,x); % Encuentra la salida del filtro
% calculado para la secuencia xplot(Y) % Grafica la salida
La función filter es implementada como la estructura “transposed direct-form II “mostrada debajo, donde n-1 es el orden del filtro. Esta es una forma canónica que tiene el mínimo número de elementos delay.
Con la función zplane(Z,P) se pueden graficar los polos y ceros en el plano complejo de una función de transferencia.
Para ello es necesario calcularpreviamente los polos (ceros del denominador) y ceros (ceros del numerador) con la función roots.
P=roots(A) % calcula ceros del denominador (polos)
Z=roots(B) % calcula ceros del numerador (ceros)
zplane(Z,P)
Secciones de Segundo-Orden (SOS)
Cualquier función de transferencia H(z) tiene una representación en secciones de Segundo-Orden.
donde L es el número de secciones de...
Regístrate para leer el documento completo.