Sunteți pe pagina 1din 2

Summary of periodic and circular convolution,

overlap-and-add and overlap-and-save


Dan Sebald, 11/6/96
Periodic convolution
Given two nite length sequences x1 (n) and x2 (n) of the same length, two periodic sequences x~1(n)
and x~2 (n) can be created by simply repeating the sequences as in Fig. 3.6(a) and (b). (If the two
original sequences are not the same length then zero pad.) The periodic convolution is dened as

x~3(n) =
X x~ (m)~x (n ; m)
N ;1
1 2 (1)
m=0
i.e., a length N segment of normal linear convolution. Figure 3.6(c) and (d) show ipping and
shifting one of the periodic signals and the product of the two signals. (Now sum to get the output
for that value of n.)
Circular convolution
Circular convolution is essentially a periodic convolution except we only keep what is inside the
dashed lines of Fig. 3.6, i.e., for 0  n  N ; 1. Mathematically this is expressed from (1) as
x3(n) = x~3 (n) u(n) ; u(n ; N )]
=
X x~ (m)~x (n ; m) u(n) ; u(n ; N )]
N ;1
1 2

NX
m =0
; 1
= x ((m))N x ((n ; m))N u(n) ; u(n ; N )]
1 2 (2)
m=0
=: x1(n) 
N x2 (n):
Thus there are several ways to think of circular convolution:
1. Do periodic convolution and set all terms equal to zero except those for 0  n  N ; 1.
2. Use modulo-N arithmetic according to (2).
3. Envision doing a circular shift on the sequence. That is, look at the samples with solid dots in
Fig. 3.6(c). It is as though the samples wrap around in a circular fashion. This is illustrated
again in Fig. 3.9.
4. Place the two sequences in circular rings, one clockwise the other counter-clockwise then
imagine rotating one of them, multiplying all numbers and summing. (Conceptually helpful,
but cumbersome to implement.)
Any of the above seem almost as easy as the rest. Pick which one you like.
Linear convolution via circular convolution
We've seen how to implement a linear convolution of two nite duration sequences if we use a
circular convolution and pad the sequences with enough zeros to prevent the circular shift from
aecting the output. Select N = length of x1 + length of x2 ; 1.
Block filtering
If we have an indenite duration sequence convolved with a short nite duration sequence block
ltering can be used, i.e., circular convolution. Figure 3.14 gives an example of such sequences.
Overlap-and-add: Very straightforward procedure.
1. Break up the long sequence into length L non-overlapped intervals as shown in Fig. 3.15(a).
2. Implement a linear convolution on each subsequence via a circular convolution by adequate
zero padding, i.e., N = L + M ; 1, where M is the length of the short nite-duration sequence.
This is shown in Fig. 3.15(b).
3. The linearity property of convolution suggests we can mearly add together all the results of
Fig. 3.15(b). Hence the term \add".
Overlap-and-\save": We must rst recognize the following fact: If M is the length of the shorter
sequence, the rst M ; 1 points of a circular convolution will, in general, not correspond to linear
convolution. However, the remaining N ; M + 1 points will agree with linear convolution. To
illustrate this, here are two ipped circular shifts of the shorter sequence for the example. Notice
that for 0  n  M ; 1 the sequence wraps around the other end and, consequently, won't produce
linear convolution.

1. Break up the long sequence into N = L + M ; 1 overlapped sequences as in Fig. 3.16(a). (We
are sort of introducing a length M ; 1 delay into the input. As an aside, think of where the
delay comes in for the overlap-and-add method.)
2. Perform N -length circular convolution on each subsequence as in Fig. 3.16(b). Note that the
length of N here is the same as the length of N for the overlap-and-add method.
3. Discard those samples in the results of Fig. 3.16(b) that do not correspond to linear convolu-
tion then add all subsequences together. (A more appropriate name might be overlap-and-
toss, wouldn't it?)

S-ar putea să vă placă și