Low-pass Filter Design Example using a Kaiser Window
fpass = 2.0e3;
fstop = 2.5e3;
Apass = 0.1;
Astop = 60;
fs = 48e3;
fc = (fpass+fstop)/2.0;
wc = 2*pi*fc/fs;
df = fstop - fpass;
delta_pass = (10^(Apass/20)-1)/(10^(Apass/20)+1);
delta_stop = 10^(-Astop/20);
delta = min(delta_pass,delta_stop);
A = -20*log10(delta);
alpha = .1101*(A-8.7);
D = (A-7.95)/14.36;
M = D*fs/df;
M = ceil(M);
if (rem(M,2)==1)
M = M+1;
end
N = M+1;
n = 0:M;
kw = kaiser(N,alpha);
h = kw'.*sin(wc*(n-M/2))./(pi*(n-M/2));
h(M/2+1) = wc/pi;
w = 0:pi/1000:pi;
H = freqz(h,1,w);
subplot(221)
plot(n,h);
axis([0 M -0.05 0.1]);
title('h(n)')
subplot(222)
plot(w*fs*1e-3/(2*pi),20*log10(abs(H)));
axis([0 24 -90 10])
title('H(w) in dB')
xlabel('f (kHz)')
subplot(223)
plot(w*fs*1e-3/(2*pi),20*log10(abs(H)));
axis([2 3 -90 10])
grid
title('H(w) in dB')
xlabel('f (kHz)')
subplot(224)
plot(w*fs*1e-3/(2*pi),20*log10(abs(H)));
axis([1.5 2.5 -.1 .1])
grid
title('H(w) in dB')
xlabel('f (kHz)')