Professional Documents
Culture Documents
8 Overlap Save Add Handouts
8 Overlap Save Add Handouts
Overlap-Save and Overlap-Add for Real-time Processing Overlap-Save and Overlap-Add for Real-time Filtering
Dr. Deepa Kundur
Texas A&M
Reference: Chapter 7 of John G. Proakis and Dimitris G. Manolakis, Digital Signal Processing: Principles, Algorithms, and Applications, 4th edition, 2007.
Fall 2010
Overlap-Save and Overlap-Add for Real-time Filtering Circular and Linear Convolution
Fall 2010
1 / 59
Overlap-Save and Overlap-Add for Real-time Filtering Circular and Linear Convolution
Fall 2010
2 / 59
X (k) = 1 N
x(n)e j2k N ,
n=0 N1
k = 0, 1, . . . , N 1
n
x(n) =
X (k)e j2k N ,
k=0
n = 0, 1, . . . , N 1
Property Notation: Periodicity: Linearity: Time reversal Circular time shift: Circular frequency shift: Complex conjugate: Circular convolution: Multiplication: Parsevals theorem:
Time Domain x(n) x(n) = x(n + N) a1 x1 (n) + a2 x2 (n) x(N n) x((n l))N x(n)e j2ln/N x (n) x1 (n) x2 (n) x1 (n)x2 (n) N1 n=0 x(n)y (n)
Frequency Domain X (k) X (k) = X (k + N) a1 X1 (k) + a2 X2 (k) X (N k) X (k)e j2kl/N X ((k l))N X (N k) X1 (k)X2 (k) 1 X (k) X2 (k) N 1 N1 1 k=0 X (k)Y (k) N
Fall 2010
3 / 59
Fall 2010
4 / 59
Circular Convolution
Circular Convolution
Assume: x1 (n) and x2 (n) have support n = 0, 1, . . . , N 1. Examples: N = 10 and support: n = 0, 1, . . . , 9
F
X1 (k)X2 (k)
-3 -2 -1 0
1
4 1 2 3 5 6 7 8 9 10 11 12
-3
-2
-1
10
11
12
-3
-2
-1
10
11
12
Overlap-Save and Overlap-Add for Real-time Filtering Circular and Linear Convolution
Fall 2010
5 / 59
Overlap-Save and Overlap-Add for Real-time Filtering Circular and Linear Convolution
Fall 2010
6 / 59
Circular Convolution
Assume: x1 (n) and x2 (n) have support n = 0, 1, . . . , N 1.
N1
x1 (n) x2 (n) = =
k=0
Example: N = 4 n -4 -3 -2 (n)4 0 1 2
-1 0 1 2 3 4 5 6 7 8 3 0 1 2 3 0 1 2 3 0
Fall 2010
7 / 59
Fall 2010
8 / 59
-1 0 1 2 3 4 5 6 7 8 3 0 1 2 3 0 1 2 3 0
x (n) =
l=
x(n lN)
x((n))4 will be periodic with period 4. The repeated pattern will be consist of: {x(0), x(1), x(2), x(3)}. Thus, x((n))N is a periodic signal comprised of the following repeating pattern: {x(0), x(1), x(N 2), x(N 1)}.
Overlap-Save and Overlap-Add for Real-time Filtering Circular and Linear Convolution
Fall 2010
9 / 59
Overlap-Save and Overlap-Add for Real-time Filtering Circular and Linear Convolution
Fall 2010
10 / 59
x (n)
2 1
x (n+2N)
x (n+N)
+
x (n)
+
x (n-N)
+
x (n-2N)
...
1 2 3 4 5 6 7
...
7
-7
-6
-5
-4
-3
-2
-1
-7
-6
-5
-4
-3
-2
-1
= x (n)
Dr. Deepa Kundur (Texas A&M) Overlap-Save and Overlap-Add for Real-time Filtering Fall 2010 11 / 59 Dr. Deepa Kundur (Texas A&M) Overlap-Save and Overlap-Add for Real-time Filtering Fall 2010 12 / 59
x (n)
2 1
x (n+2N)
x (n+N)
x (n)
+
...
1 2 3 4 5 6 7
+ +
-7
-6
-5
-4
-3
-2
-1
-7
-6
-5
-4
-3
-2
-1
x(n lN)
l=
x (n)
2 1
Note: Because the support size and period size are the same, there is no overlap when taking the periodic repetition x((n))N .
2 3 4 5 6 7
-7
-6
-5
-4
-3
-2
-1
=x(n)
Overlap-Save and Overlap-Add for Real-time Filtering Circular and Linear Convolution
Fall 2010
13 / 59
Overlap-Save and Overlap-Add for Real-time Filtering Circular and Linear Convolution
Fall 2010
14 / 59
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7
Fall 2010
15 / 59
Fall 2010
16 / 59
x((n))N
x((n))N
Overlap-Save and Overlap-Add for Real-time Filtering Circular and Linear Convolution
Fall 2010
17 / 59
Overlap-Save and Overlap-Add for Real-time Filtering Circular and Linear Convolution
x((n))N
15 11 7 3 -1
12 8 4 0 -4
1
k))N (or
k))N ):
x (n)
2 1
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 ...
14 10 6 2 -2
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7
x2 (n) =
l=
x2 (n lN)
x1 (k)2 (n k) = x
k=0
x1 (k)2 (n k) x
14 10 6 2 -2
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7
1 0
15 11 7 3 -1
1
12 8 4 0 -4
1
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7
13 9 5 1 -3
0
Fall 2010
18 / 59
13 9 5 1 -3
Fall 2010
20 / 59
k))N (or
k))N ):
x1 (k) x2 (n k)
x1 (k)x2 (n k) =
k=0
x1 (k)x2 (n k)
2. Compute the periodic repetition of xL (n) and window the result for n = 0, 1, . . . , N 1:
x1 (n) x2 (n)
=
l=
xL (n lN),
n = 0, 1, . . . , N 1
Overlap-Save and Overlap-Add for Real-time Filtering Circular and Linear Convolution
Fall 2010
21 / 59
Overlap-Save and Overlap-Add for Real-time Filtering Circular and Linear Convolution
Fall 2010
22 / 59
xL (n lN)
for n = 0, 1, . . . , N 1 Q: When can one recover xL (n) from xC (n)? When can one use the DFT (or FFT) to compute linear convolution? A: When there is no overlap in the periodic repetition of xL (n). When support length of xL (n) N.
Dr. Deepa Kundur (Texas A&M) Overlap-Save and Overlap-Add for Real-time Filtering Fall 2010 23 / 59
2. Take N-DFT of h(n) to give H(k), k = 0, 1, . . . , N 1. 3. Multiply: Y (k) = X (k) H(k), k = 0, 1, . . . , N 1. 4. Take N-IDFT of Y (k) to give y (n), n = 0, 1, . . . , N 1.
Fall 2010
24 / 59
Stage 1
Stage 2
Stage 3
X(0) X(1)
The input signal x(n) is often very long especially in real-time signal monitoring applications. For linear ltering via the DFT, for example, the signal must be limited size due to memory requirements.
W8
-1 W8 -1 W8
2 0
X(2) X(3)
W8 -1 W8
1 0
0 W8
-1
-1
0 W8
-1 W8 -1 W8
2 0
-1 W8 -1 W8 -1 -1
3 2
W8
-1
Overlap-Save and Overlap-Add for Real-time Filtering Filtering of Long Data Sequences
Fall 2010
25 / 59
Overlap-Save and Overlap-Add for Real-time Filtering Filtering of Long Data Sequences
Fall 2010
26 / 59
Main advantage: samples of the output y (n) = h(n) x(n) will be available real-time on a block-by-block basis.
Fall 2010
27 / 59
Fall 2010
28 / 59
Overlap-Add Method
Overlap-Add Method
Overlap-Add Method
Assumptions:
FIR lter h(n) length = M Block length = L M
Fall 2010
29 / 59
Fall 2010
30 / 59
Overlap-Add Method
-3 -2
x(n)
1
4 -1 0 1 2 3 5 6 7 8 9 10
* h(n)
n
L=4 L=4 L=4 L=4
Deals with the following signal processing principles: The linear convolution of a discrete-time signal of length L and a discrete-time signal of length M produces a discrete-time convolved result of length L + M 1. Addititvity: (x1 (n)+x2 (n)) h(n) = x1 (n) h(n)+x2 (n) h(n)
+
-3 -2 -1 0
x1(n)
=
-3 -2 -1 0
1
10 1 2 3 4 5 6 7 8 9
* h(n)
n
L=4
x2(n)
+
-3 -2 -1 0
1
4 1 2 3 5 6 7 8 9 10
* h(n)
n
L=4
x3(n)
1
Each input block xm (n) is individually ltered as it is received to produce the output block ym (n).
* h(n)
10 1 2 3 6 7 8 9
+ ...
n
L=4
Fall 2010
31 / 59
Fall 2010
32 / 59
Overlap-Add Method
Overlap-Add Method
We set N L + M 1 (the length of the linear convolution result) and zero pad xm (n) and h(n) to have support n = 0, 1, . . . , N 1.
1. Take N-DFT of xm (n) to give Xm (k), k = 0, 1, . . . , N 1. 2. Take N-DFT of h(n) to give H(k), k = 0, 1, . . . , N 1. 3. Multiply: Ym (k) = Xm (k) H(k), k = 0, 1, . . . , N 1. 4. Take N-IDFT of Ym (k) to give ym (n), n = 0, 1, . . . , N 1.
Fall 2010
33 / 59
Fall 2010
34 / 59
x(n)
1
4 -1 0 1 2 3 5 6 7 8 9 10
* h(n)
n
L=4 L=4 L=4 L=4
x (n)
2 1
x (n+2N)
x (n+N)
+
x (n)
+
x (n-N)
+
x (n-2N)
x1(n)
...
1 2 3 4 5 6 7
...
7
=
n
-3 -2 -1 0
1
10
* h(n)
1 2 3 4 5 6 7 8 9
-7
-6
-5
-4
-3
-2
-1
-7
-6
-5
-4
-3
-2
-1
x2(n)
L=4
+
x (n)
-3 -2 -1 0
1
4 1 2 3 5 6 7 8 9 10
* h(n)
n
L=4
2 1
x3(n)
Each input block xm (n) is individually ltered as it is received to produce the output block ym (n).
-7
-6
-5
-4
-3
-2
-1
+
-3 -2 -1 0
1
10 1 2 3 6 7 8 9
* h(n)
L=4
+ ...
n
= x (n)
Dr. Deepa Kundur (Texas A&M) Overlap-Save and Overlap-Add for Real-time Filtering Fall 2010 35 / 59
Fall 2010
36 / 59
Overlap-Add Method
Overlap-Add Method
x(n)
1
4 -3 -2 -1 0 1 2 3 5 6 7 8 9 10
* h(n)
n
L=4 L=4 L=4 L=4
y1(n)
=
-3 -2 -1 0
These extra M-1 samples (i.e., tail) due to convolution expanding the support must be added to the begininning of the next output block
10
xm (n)
y2(n)
M-1=2
+
-3 -2 -1 0
x(n) h(n) = (x1 (n) + x2 (n) + x3 (n) + ) h(n) = x1 (n) h(n) + x2 (n) h(n) + x3 (n) h(n) +
4 1 2 3
6 6 7
10
=
m=1
y3(n)
M-1=2
xm (n) h(n) =
m=1
ym (n)
+
-3 -2 -1 0
+ ...
10 8 9
n
M-1=2
L=4
Fall 2010
37 / 59
Fall 2010
38 / 59
x(n)
1
4 -3 -2 -1 0 1 2 3 5 6 7 8 9 10
* h(n)
n
L=4 L=4 L=4 L=4
Input signal:
Output blocks ym (n) must be tted together appropriately to generate: y (n) = x(n) h(n) The support overlap amongst the ym (n) blocks must be accounted for.
=
-3
y1(n)
-2 -1 0
These extra M-1 samples (i.e., tail) due to convolution expanding the support must be added to the 4 begininning of the next output 5 6 7 8 9 10 block
10
n n
zeros zeros
-3
-2
-1
y2(n)
M-1=2
+
-3 -2 -1 0
Output signal:
Add points Add points
zeros
4 1 2 3
6 6 7
10
y3(n)
M-1=2
+
-3 -2 -1 0
+ ...
10 8 9
n
M-1=2
L=4
Fall 2010
39 / 59
Fall 2010
40 / 59
Overlap-Add Method
Overlap-Add Method
Overlap-Add Method
1. Break the input signal x(n) into non-overlapping blocks xm (n) of length L. 2. Zero pad h(n) to be of length N = L + M 1. 3. Take N-DFT of h(n) to give H(k), k = 0, 1, . . . , N 1. 4. For each block m: 4.1 4.2 4.3 4.4 Zero pad xm (n) to be of length N = L + M 1. Take N-DFT of xm (n) to give Xm (k), k = 0, 1, . . . , N 1. Multiply: Ym (k) = Xm (k) H(k), k = 0, 1, . . . , N 1. Take N-IDFT of Ym (k) to give ym (n), n = 0, 1, . . . , N 1.
If you DO NOT overlap and add, but only append the output blocks ym (n) for m = 1, 2, . . ., then you will not get the true y (n) sequence. Q: What sequence will you obtain instead?
5. Form y (n) by overlapping the last M 1 samples of ym (n) with the rst M 1 samples of ym+1 (n) and adding the result.
Fall 2010
41 / 59
Fall 2010
42 / 59
Fall 2010
43 / 59
Fall 2010
44 / 59
Overlap-Save Method
Overlap-Save Method
Overlap-Save Method
Overlap-Save Method
Deals with the following signal processing principles: The N = (L + M 1)-circular convolution of a discrete-time signal of length N and a discrete-time signal of length M using an N-DFT and N-IDFT. Time-Domain Aliasing:
xC (n) =
xL (n lN) ,
l= support=M + N 1
n = 0, 1, . . . , N 1
Fall 2010
45 / 59
Fall 2010
46 / 59
Overlap-Save Method
yL(n) linear convolution 2 result
1
yL(n+2N)
yL(n+N)
yL(n)
+
yL(n-N)
yL(n-2N)
+
...
n
+ +
...
n
+
-1 0 1 2 3 4 5 6 7
Convolution of xm (n) with support n = 0, 1, . . . , N 1 and h(n) with support n = 0, 1, . . . , M 1 via the N-DFT will produce a result yC ,m (n) such that:
yC ,m (n) = aliasing corruption yL,m (n) n = 0, 1, . . . , M 2 n = M 1, M, . . . , N 1
-7
-6
-5
-4
-3
-2
-1
-7
-6
-5
-4
-3
-2
yC (n)
2 1
The rst M 1 points of a the current ltered output block ym (n) must be discarded. The previous ltered block ym1 (n) must compensate by providing these output samples.
Fall 2010 47 / 59 Dr. Deepa Kundur (Texas A&M) Overlap-Save and Overlap-Add for Real-time Filtering Fall 2010 48 / 59
Overlap-Save Method
Overlap-Save Method
zeros
Fall 2010
49 / 59
Fall 2010
50 / 59
x1 (n) = {0,
0, . . .
M 1 zeros
The input blocks xm (n) are of length N to start, so no zero-padding is necessary. The actual implementation of the DFT/IDFT will use the FFT/IFFT for computational simplicity.
. . . The last M 1 points from the previous input block must be saved for use in the current input block.
Dr. Deepa Kundur (Texas A&M) Overlap-Save and Overlap-Add for Real-time Filtering Fall 2010 51 / 59
Fall 2010
52 / 59
Overlap-Save Method
Overlap-Save Method
yL(n+2N)
yL(n+N)
yL(n)
+
yL(n-N)
yL(n-2N)
+
...
n
+ +
...
n
+
-1 0 1 2 3 4 5 6 7
-7
-6
-5
-4
-3
-2
-1
-7
-6
-5
-4
-3
-2
yC (n)
2 1
Fall 2010
53 / 59
Fall 2010
54 / 59
yC ,m (n) =
y3 (n)
The rst M 1 points of each output block are discarded. The remaining L points of each output block are appended to form y (n).
Dr. Deepa Kundur (Texas A&M) Overlap-Save and Overlap-Add for Real-time Filtering Fall 2010 55 / 59 Dr. Deepa Kundur (Texas A&M) Overlap-Save and Overlap-Add for Real-time Filtering Fall 2010 56 / 59
Overlap-Save Method
Overlap-Save Method
Overlap-Save Method
1. Insert M 1 zeros at the beginning of the input sequence x(n). 2. Break the padded input signal into overlapping blocks xm (n) of length N = L + M 1 where the overlap length is M 1. 3. Zero pad h(n) to be of length N = L + M 1. 4. Take N-DFT of h(n) to give H(k), k = 0, 1, . . . , N 1. 5. For each block m: 5.1 Take N-DFT of xm (n) to give Xm (k), k = 0, 1, . . . , N 1. 5.2 Multiply: Ym (k) = Xm (k) H(k), k = 0, 1, . . . , N 1. 5.3 Take N-IDFT of Ym (k) to give ym (n), n = 0, 1, . . . , N 1.
Fall 2010
57 / 59
Fall 2010
58 / 59
Overlap-Save Method
Input signal blocks:
zeros
point overlap
point overlap
Discard points
Fall 2010
59 / 59