Esperando en línea a que el programa matlab implemente el filtro digital de eliminación de banda FIR mediante una ventana triangular
wp1=0.12*pi; ws1=0.32*pi;
ws2=0.62*pi; wp2=0.82*pi;
tr_width=min(( ws1-wp1), (wp2-ws2));
N=ceil (6.1*pi/tr_width);
n=[0:1:N-1]; /p>
wc1=(ws1 wp1)/2;
wc2=(ws2 wp2)/2
hd=ideal_bs(wc1,wc2,N); /p>
w_tria=(triang (N))';
h=hd.*w_tria;
[db, mag, pha, grd , w]=freqz_m2(h,[1]);
delta_w=2*pi/1000;
Ap=-min(db(1:1:wp1/delta_w 1 ) )
As=-round(max(db(ws1/delta_w 1:1:ws2/delta_w 1)))
subplot(221)
raíz (n, hd)
title('Respuesta al impulso de la unidad ideal hd (n)')
subtrama( 222)
stem(n, w_tria)
título('Ventana triangular w (n)')
subtrama(223)
tallo(n, h)
título ( 'Respuesta al impulso unitario real 'hd (n)')
subplot(224)
plot(w/pi, db)
title('Respuesta de magnitud (dB) ' )
llamada 1:
función [db, mag, pha, grd, w] = freqz_m(b, a);
Versión modificada de la subrutina freqz
------------------------------------
[db, mag, pha, grd, w] = freqz_m(b, a);
db = amplitud relativa (dB) calculada en el rango de 0 a pi radianes
mag = amplitud absoluta calculada en el rango de 0 a pi radianes
pha = respuesta de fase (radianes) calculada en el rango de 0 a pi radianes
grd = calculada en el rango de 0 a pi Grupo retraso calculado en radianes
w = 501 muestras de frecuencia en el rango de 0 a pi radianes
b = polinomio numerador de H(z) (para FIR: b =h)
a = polinomio denominador de H(z) (para FIR: a=[1])
[H, w] = freqz (b, a, 1000 , 'todo');
H = (H(1:1:501))'; w = (w(1:1:501))'; abs(H);
db = 20*log10((mag eps)/max(mag));
pha = ángulo(H);
p>
pha = desenvolver( ángulo(H));
grd = grpdelay(b, a, w
grd = diff(pha
grd = [grd(1) grd];
grd = [0 grd(1:1:500); grd(2:1:501) 0];< /p
grd = mediana(grd)*500/pi;
Llamada 2:
función hd=ideal_bs(Wcl, Wch, m ); p>
p>
alfa=(m-1)/2;
n=[0:1: (m-1)]; n-alfa eps;
hd=[sin(m*pi) sin(Wcl*m)-sin(Wch*m)]./(pi*m).