If the desired interpolation points are not uniformly spaced
between 00 and
π then we can not use the DFT. We must
take a different approach. Recall that for a Type I FIR
filter,
Aω=hM+2∑n=0M−1hncosM−nω
A
ω
h
M
2
n
0
M
1
h
n
M
n
ω
For convenience, it is common to write this as
Aω=∑n=0Mancosnω
A
ω
n
0
M
a
n
n
ω
where
hM=a0
h
M
a
0
and
∀n,1≤n≤N−1:hn=aM−n2
n
1
n
N
1
h
n
a
M
n
2
. Note that there are
M+1
M
1
parameters. Suppose it is desired that
Aω
A
ω
interpolates a set of specified values:
∀k,0≤k≤M:A
ω
k
=
A
k
k
0
k
M
A
ω
k
A
k
To obtain a Type I FIR filter satisfying these interpolation
equations, one can set up a linear system of equations.
∀k,0≤k≤M:∑n=0Mancosn
ω
k
=
A
k
k
0
k
M
n
0
M
a
n
n
ω
k
A
k
In matrix form, we have
1cos
ω
0
cos2
ω
0
…cosM
ω
0
1cos
ω
1
cos2
ω
1
…cosM
ω
1
⋮1cos
ω
M
cos2
ω
M
…cosM
ω
M
a0a1⋮aM=A0A1⋮AM
1
ω
0
2
ω
0
…
M
ω
0
1
ω
1
2
ω
1
…
M
ω
1
⋮
1
ω
M
2
ω
M
…
M
ω
M
a
0
a
1
⋮
a
M
A
0
A
1
⋮
A
M
Once
an
a
n
is found, the filter
hn
h
n
is formed as
hn=1/2aMaM−1…a12a0a1…aM−1aM
h
n
12
a
M
a
M
1
…
a
1
2
a
0
a
1
…
a
M
1
a
M
In the following example, we design a length 19 Type I FIR.
Then
M=9
M
9
and we have 10 parameters. We can therefore have 10
interpolation equations. We choose:
∀k,
ω
k
=00.1π0.2π0.3π0≤k≤3:A
ω
k
=1
k
ω
k
0
0.1
0.2
0.3
0
k
3
A
ω
k
1
(1)
∀k,
ω
k
=0.5π0.6π0.7π0.8π0.8π1.0π4≤k≤9:A
ω
k
=0
k
ω
k
0.5
0.6
0.7
0.8
0.8
1.0
4
k
9
A
ω
k
0
(2)
To solve this interpolation problem in Matlab, note that the
matrix can be generated by a single multiplication of a column
vector and a row vector. This is done with the command
C = cos(wk*[0:M]);
where
wk is a column vector containing
the frequency points. To solve the linear system of
equations, we can use the Matlab backslash command.
N = 19;
M = (N-1)/2;
wk = [0 .1 .2 .3 .5 .6 .7 .8 .9 1]'*pi;
Ak = [1 1 1 1 0 0 0 0 0 0]';
C = cos(wk*[0:M]);
a = C/Ak;
h = (1/2)*[a([M:-1:1]+1); 2*a([0]+1); a(1:M]+1)];
[A,w] = firamp(h,1);
plot(w/pi,A,wk/pi,Ak,'o')
title('A(\omega)')
xlabel('\omega/\pi')
The general interpolation problem is much more flexible than
the uniform interpolation problem that the DFT solves. For
example, by leaving a gap between the pass-band and stop-band
as in this example, the ripple near the band edge is reduced
(but the transition between the pass- and stop-bands is not as
sharp). The general interpolation problem also arises as a
subproblem in the design of optimal minimax (or Chebyshev) FIR
filters.
FIR digital filters have several desirable properties.
- They can have exactly linear phase.
- They can not be unstable.
-
There are several very effective methods for designing
linear-phase FIR digital filters.
On the other hand,
- Linear-phase filters can have long delay between input
and output.
-
If the phase need not be linear, then IIR filters can be
more efficient.