
Overlap-Save Method
293
impulse response is zero padded on the right to make it equal to the
block length and we get {2,1,4,3,0,0,0,0}. The DFT of this, with a
precision of 2 digits, is
1.25,0.07
-jO.85, -0.25 + jO.25,0.43 + jO.15,0.25,
0.43 - jO.15, -0.25 - jO.25,0.07 + jO.85. The DFT values are divided by,
TV = 8, the block length so that we do not need to divide every time an
IDFT is computed. Note that, as the impulse response is fixed, we have to
compute this DFT only once. Also, as the DFT is conjugate-symmetric,
the storage of half of the transform is sufficient.
The input data is divided into overlapping blocks of size 8. There are 4
blocks for the present example. The blocks correspond to the 4 sets of zero
padded impulse response shown. Note that at the end also we zero pad the
input data so that we get an integral number of blocks. With zero padding,
the length of the input data has become 23. We take the first two input
blocks and make a set of 8 complex numbers by putting the first block val-
ues in real parts and second block values in the imaginary parts. For this
example, we get 0+j'l,0+j3,0+j5,7+j9,4+jl,l+j0,3+j2,5+j4. The
DFT of this, with a precision of 2 digits, is 20 + 25,2.54 + jO.88, -9 +
j6,0.78 -
j'2.29,
-6 - j7, -4.54 + J5.12,11 - jl6, -14.78 -
J3.71.
The
pointwise multiplication of this DFT with that of the impulse response
yields, with a precision of 2 digits, 25 + j31.25,0.94 - j'2.10,0.75 - J3.75,
0.67 - jO.86, -1.5 -
jl.75,
-1.19 +
j'2.85,
-6.75 + jl.25,2.08 - J12.89. The
IDFT (remember the division by 8 required by the IDFT operation has al-
ready been done) of this is 20 + jl4,29 + ;29,15 + j'29,14 + j'38,
15 + j40,34 + j52,44 + j35,29 + jl3. The first three values are discarded.
The last five values of the real part appended by the last five values of the
imaginary part are the first ten values of the convolution output, y(n). We
combine two blocks to make a complex signal in order to use an algorithm
for complex data, rather than taking one block and using an algorithm for
real data since the algorithms for complex data are more regular and sim-
pler. In addition, there is no need to split the individual DFTs. We repeat
this procedure until all the input values are processed. If we end up with
one block at the end, then we still use a complex algorithm by assuming a
block with all zeros. An algorithm for real data can be used. This requires
having two algorithms and the work saved will be little if the data length is
very long. Remember that we have to append Q
—
1 zeros to the sequence
x(n) in order to produce all output values. Since we prefer to use algo-
rithms that require the data length to be an integral power of 2, we may
have to append the data further with zeros. Since, the input blocks are