06-05-2011, 03:43 PM
Procedure:-
1) Get the sampling frequency
2) Get the pass band frequency
3) Get the stop band frequency or transition width
4) Get the pass band ripple and stop band attenuation
5) Select the window suitable for the stop band attenuation
6) Calculate the order ,N, based on the Transition width
7) Find the N window coefficients
8) Find truncated impulse response of h[n]
9) Verify the frequency response of h[n]
MATLAB program for FIR filter
Code:
clear
clc
close all
% ENTER THE SAMPLING FREQUENCY
Fs = 8000;
%NORMALIZED FREQUENCY = Fs/2
Fn = Fs/2;
% ENTER THE PASSBAND FREQUENCY
fp = 1500;
% ENTER THE TRANSITION WIDTH
tw = 500;
%NORMALIZE THE TRANSITION WIDTH TO NYQUIST FREQUENCY
twn = tw/(Fs/2);
% ENTER THE STOPBAND ATTENUATION
As = 35
% CHECK WHICH WINDOW SATISFIES THE STOPBAND ATTENUATION AND
% CALCULATE THE ORDER, HERE OPTION FOR TWO WINDOWS IS GIVEN
if As <= 21
N = ceil(2/twn)
wn = bpxcar(N);
disp('Rectangular window')
elseif As > 21
N = ceil(6/twn)
wn = blackman(N);
disp('blackman window')
end
% CALCULATE NORMALIZED CUT-OFF FREQUENCY
fc = (fp+tw)/(Fs/2);
% truncated IDEAL IMPULSE RESPONSE COEFFICIENTS
hd = fir1(N-1,fc,boxcar(N))
%WINDOWED RESPONSE COEFFICIENTS
hn= fir1(N-1,fc,wn)
% PLOT THE WINDOWED RESPONSE COEFFICIENTS
plot(0:N-1,hn);
title('FIR filter coefficients')
% CALCULATE THE FREQUENCY RESPONSE AND PLOT IN A NEW FIGURE
[H,f] = freqz(hn,1,512,Fs);
mag = 20*log10(abs(H));
figure
plot(f,mag);
xlabel('frequency(Hz)-->');
ylabel('magnitude(dB)-->');
title('SMagnitude response');
grid on;
RESULT:- FIR FILTER DESIGN