| Type |
|
|
|---|---|---|
| I |
|
|
| II |
|
|
| III |
|
|
| IV |
|
|
where
Summary: (Blank Abstract)
Note: You are viewing an old version of this document. The latest version is available here.
| Type |
|
|
|---|---|---|
| I |
|
|
| II |
|
|
| III |
|
|
| IV |
|
|
where
To analyze or design linear-phase FIR filters, we need to know
the characteristics of the amplitude response
| Type | Properties | |
|---|---|---|
| I |
|
|
|
|
|
|
|
|
|
|
| II |
|
|
|
|
|
|
|
|
|
|
| III |
|
|
|
|
|
|
|
|
|
|
| IV |
|
|
|
|
|
|
|
|
|
![]() |
The frequency response
Suppose the FIR filter
For Type III and Type IV FIR filters, we have
In this example, the filter is a Type I FIR filter of length
7. An accurate plot of
![]() |
The following Matlab code fragment for the plot of
h = [3 4 5 6 5 4 3]/30;
N = 7;
M = (N-1)/2;
L = 512;
H = fft([h zeros(1,L-N)]);
k = 0:L-1;
W = exp(j*2*pi/L);
A = H .* W.^(M*k);
A = real(A);
figure(1)
w = [0:L-1]*2*pi/(L-1);
subplot(2,1,1)
plot(w/pi,abs(H))
ylabel('|H(\omega)| = |A(\omega)|')
xlabel('\omega/\pi')
subplot(2,1,2)
plot(w/pi,A)
ylabel('A(\omega)')
xlabel('\omega/\pi')
print -deps type1
The command A = real(A) removes the
imaginary part which is equal to zero to within computer
precision. Without this command, Matlab takes
A to be a complex vector and the
following plot command will not be right.
Observe the symmetry of
![]() |
The following Matlab code fragment produces a plot of
h = [3 5 6 7 7 6 5 3]/42;
N = 8;
M = (N-1)/2;
L = 512;
H = fft([h zeros(1,L-N)]);
k = 0:L-1;
W = exp(j*2*pi/L);
A = H .* W.^(M*k);
A = real(A);
figure(1)
w = [0:L-1]*2*pi/(L-1);
subplot(2,1,1)
plot(w/pi,abs(H))
ylabel('|H(\omega)| = |A(\omega)|')
xlabel('\omega/\pi')
subplot(2,1,2)
plot(w/pi,A)
ylabel('A(\omega)')
xlabel('\omega/\pi')
print -deps type2
The imaginary part of the amplitude is zero. Notice that
An exercise for the student: Describe how to obtain samples
of