SlideShare a Scribd company logo
2
Most read
4
Most read
Overlap-Save and Overlap-Add
Dr. Deepa Kundur
University of Toronto
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 1 / 58
Overlap-Save and Overlap-Add Circular and Linear Convolution
The Discrete Fourier Transform Pair
DFT and inverse-DFT (IDFT):
X(k) =
N−1
n=0
x(n)e−j2πk n
N , k = 0, 1, . . . , N − 1
x(n) =
1
N
N−1
k=0
X(k)ej2πk n
N , n = 0, 1, . . . , N − 1
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 2 / 58
Overlap-Save and Overlap-Add Circular and Linear Convolution
Important DFT Properties
Property Time Domain Frequency Domain
Notation: x(n) X(k)
Periodicity: x(n) = x(n + N) X(k) = X(k + N)
Linearity: a1x1(n) + a2x2(n) a1X1(k) + a2X2(k)
Time reversal x(N − n) X(N − k)
Circular time shift: x((n − l))N X(k)e−j2πkl/N
Circular frequency shift: x(n)ej2πln/N X((k − l))N
Complex conjugate: x∗(n) X∗(N − k)
Circular convolution: x1(n) ⊗ x2(n) X1(k)X2(k)
Multiplication: x1(n)x2(n) 1
N
X1(k) ⊗ X2(k)
Parseval’s theorem: N−1
n=0 x(n)y∗(n) 1
N
N−1
k=0 X(k)Y ∗(k)
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 3 / 58
Overlap-Save and Overlap-Add Circular and Linear Convolution
Circular Convolution
x1(n) ⊗ x2(n)
F
←→ X1(k)X2(k)
Q: What is circular convolution?
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 4 / 58
Overlap-Save and Overlap-Add Circular and Linear 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
-1 0
n-2-3 1 2 3 6 8754 9 101 2 3 6 8754 9 10
1
11 12
54
-1 10
n-2-3 2 3
1
6 87 96 87 9 10 11 12 54-1 0
n-2-3
1
1 2 3 6 87 9 10 11 12
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 5 / 58
Overlap-Save and Overlap-Add Circular and Linear Convolution
Circular Convolution
Assume: x1(n) and x2(n) have support n = 0, 1, . . . , N − 1.
x1(n) ⊗ x2(n) =
N−1
k=0
x1(k)x2((n − k))N
=
N−1
k=0
x2(k)x1((n − k))N
where (n)N = n mod N = remainder of n/N.
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 6 / 58
Overlap-Save and Overlap-Add Circular and Linear Convolution
Modulo Indices and Periodic Repetition
(n)N = n mod N = remainder of n/N
Example: N = 4
n -4 -3 -2 -1 0 1 2 3 4 5 6 7 8
(n)4 0 1 2 3 0 1 2 3 0 1 2 3 0
n
N
= integer +
nonneg integer < N
N
5
4
= 1 +
1
4
−2
4
= −1 +
2
4
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 7 / 58
Overlap-Save and Overlap-Add Circular and Linear Convolution
Modulo Indices and Periodic Repetition
(n)N = n mod N = remainder of n/N
Example: N = 4
n -4 -3 -2 -1 0 1 2 3 4 5 6 7 8
(n)4 0 1 2 3 0 1 2 3 0 1 2 3 0
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)}.
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 8 / 58
Overlap-Save and Overlap-Add Circular and Linear Convolution
Overlap During Periodic Repetition
A periodic repetition makes an aperiodic signal x(n), periodic to
produce ˜x(n).
˜x(n) =
∞
l=−∞
x(n − lN)
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 9 / 58
Overlap-Save and Overlap-Add Circular and Linear Convolution
Overlap During Periodic Repetition
A periodic repetition makes an aperiodic signal x(n), periodic to
produce ˜x(n).
There are two important parameters:
1. smallest support length of the signal x(n)
2. period N used for repetition that determines the period of ˜x(n)
smallest support length > period of repetition
there will be overlap
smallest support length ≤ period of repetition
there will be no overlap
⇒ x(n) can be recovered from ˜x(n)
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 10 / 58
Overlap-Save and Overlap-Add Circular and Linear Convolution
Periodic Repetition: Example N = 4
-1 10
n
x (n)
= x (n)
-2-3-4-5-6-7 2 3 4 5 6 7
1
2
-1 10
n-2-3-4-5-6-7 2 3 4 5 6 7
1
2
x (n)support length = 4 = N
no overlap
-1 10
n-2-3-4-5-6-7 2 3 4 5 6 7
x (n)
+
l=0
x (n-N)
+
l=1
+
x (n+N)
l=-1
+
x (n+2N)
l=-2
x (n-2N)
l=2
......
~
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 11 / 58
Overlap-Save and Overlap-Add Circular and Linear Convolution
Period Repetition: Example N = 4
1
=x(n)
x (n)
-1 10
n-2-3-4-5-6-7 2 3 4 5 6 7
1
2
support length = 6 > N
overlap
n-1 10-2-3-4-5-6-7 2 3 4 5 6 7
2
1
x (n)
-1 10
n-2-3-4-5-6-7 2 3 4 5 6 7
l=0 l=1
+ +
l=-1
+ + +
l=-2 l=2
......
~
x (n)
x (n-N)x (n+N)
x (n+2N) x (n-2N)
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 12 / 58
Overlap-Save and Overlap-Add Circular and Linear Convolution
Modulo Indices and the Periodic Repetition
Assume: x(n) has support n = 0, 1, . . . , N − 1.
x((n))N = x(n mod N) = ˜x(n) =
∞
l=−∞
x(n − lN)
Note: Because the support size and period size are the same, there is
no overlap when taking the periodic repetition x((n))N.
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 13 / 58
Overlap-Save and Overlap-Add Circular and Linear Convolution
Modulo Indices and the Periodic Repetition
n
x(n)
1
2
-1 10-2-3-4-5-6-7 2 3 4 5 6 7
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 14 / 58
Overlap-Save and Overlap-Add Circular and Linear Convolution
Modulo Indices and the Periodic Repetition
1 1
2
0
n
x(n)
1
2
-1 10-2-3-4-5-6-7 2 3 4 5 6 7
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 15 / 58
Overlap-Save and Overlap-Add Circular and Linear Convolution
Modulo Indices and the Periodic Repetition
1 1
2
0
2
11
0
n
x(n)
1
2
-1 10-2-3-4-5-6-7 2 3 4 5 6 7
x((n))N
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 16 / 58
Overlap-Save and Overlap-Add Circular and Linear Convolution
Modulo Indices and the Periodic Repetition
1 1
2
0
2
11
0
12
8
4
0
-4
13
9
5
1
-3
14
10
6
2
-2
15
11
7
3
-1
n
x(n)
1
2
-1 10-2-3-4-5-6-7 2 3 4 5 6 7
x((n))N
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 17 / 58
Overlap-Save and Overlap-Add Circular and Linear Convolution
Modulo Indices and the Periodic Repetition
n
-1 10-2-3-4-5-6-7 2 3 4 5 6 7 ...
1
2
x (n)
~
1 1
2
0
2
11
0
12
8
4
0
-4
13
9
5
1
-3
14
10
6
2
-2
15
11
7
3
-1
n
x(n)
1
2
-1 10-2-3-4-5-6-7 2 3 4 5 6 7
x((n))N
Therefore x((n))N = ˜x(n).
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 18 / 58
Overlap-Save and Overlap-Add Circular and Linear Convolution
Circular Convolution: One Interpretation
Assume: x1(n) and x2(n) have support n = 0, 1, . . . , N − 1.
To compute
N−1
k=0 x1(k)x2((n − k))N (or
N−1
k=0 x2(k)x1((n − k))N ):
1. Take the periodic repetition of x2(n) with period N:
˜x2(n) =
∞
l=−∞
x2(n − lN)
2. Conduct a standard linear convolution of x1(n) and ˜x2(n) for
n = 0, 1, . . . , N − 1:
x1(n) ⊗ x2(n) = x1(n) ∗ ˜x2(n) =
∞
k=−∞
x1(k)˜x2(n − k) =
N−1
k=0
x1(k)˜x2(n − k)
Note: x1(n) ⊗ x2(n) = 0 for n < 0 and n ≥ N.
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 19 / 58
Overlap-Save and Overlap-Add Circular and Linear Convolution
Circular Convolution: One Interpretation
N−1
k=0
x1(k) x2((n − k))N =
N−1
k=0
x1(k) ˜x2(n − k)
. . . which makes sense, since x((n))N = ˜x(n).
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 20 / 58
Overlap-Save and Overlap-Add Circular and Linear Convolution
Circular Convolution: Another Interpretation
Assume: x1(n) and x2(n) have support n = 0, 1, . . . , N − 1.
To compute
N−1
k=0 x1(k)x2((n − k))N (or
N−1
k=0 x2(k)x1((n − k))N ):
1. Conduct a linear convolution of x1(n) and x2(n) for all n:
xL(n) = x1(n) ∗ x2(n) =
∞
k=−∞
x1(k)x2(n − k) =
N−1
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
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 21 / 58
Overlap-Save and Overlap-Add Circular and Linear Convolution
Using DFT for Linear Convolution
Therefore, circular convolution and linear convolution are related as
follows:
xC (n) = x1(n) ⊗ x2(n) =
∞
l=−∞
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 (University of Toronto) Overlap-Save and Overlap-Add 22 / 58
Overlap-Save and Overlap-Add Circular and Linear Convolution
Using DFT for Linear Convolution
Let x(n) have support n = 0, 1, . . . , L − 1.
Let h(n) have support n = 0, 1, . . . , M − 1.
We can set N ≥ L + M − 1 and zero pad x(n) and h(n) to have
support n = 0, 1, . . . , N − 1.
1. Take N-DFT of x(n) to give X(k), k = 0, 1, . . . , N − 1.
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.
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 23 / 58
Overlap-Save and Overlap-Add Filtering of Long Data Sequences
Filtering of Long Data Sequences
The input signal x(n) is often very long especially in real-time
signal monitoring applications.
For linear filtering via the DFT, for example, the signal must be
limited size due to memory requirements.
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 24 / 58
Overlap-Save and Overlap-Add Filtering of Long Data Sequences
Filtering of Long Data Sequences
Recall, for N = 8 the 8-FFT is given by
X(0)
X(1)
X(2)
X(3)
X(4)
X(5)
X(6)
X(7)
x(1)
x(5)
x(3)
x(7)
x(0)
x(4)
x(2)
x(6)
Stage 1 Stage 2 Stage 3
-1
-1
-1
-1 -1
-1 -1
-1
-1
-1
-1
-1
0
W8
0
W8
0
W8
0
W8
0
W8
0
W8
1
W8
2
W8
2
W8
0
W8
2
W8
3
W8
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 25 / 58
Overlap-Save and Overlap-Add Filtering of Long Data Sequences
Filtering of Long Data Sequences
All N-input samples are required simultaneously by the FFT
operator.
Complexity of N-FFT is N log(N).
If N is too large as for long data sequences, then there is a
significant delay in processing that precludes real-time
processing.
signal
input
signal
output
Data Acquisition
Delay
Data Processing
Delay
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 26 / 58
Overlap-Save and Overlap-Add Filtering of Long Data Sequences
Filtering of Long Data Sequences
Strategy:
1. Segment the input signal into fixed-size blocks prior to
processing.
2. Compute DFT-based linear filtering of each block separately via
the FFT.
3. Fit the output blocks together in such a way that the overall
output is equivalent to the linear filtering of x(n) directly.
Main advantage: samples of the output y(n) = h(n) ∗ x(n) will
be available real-time on a block-by-block basis.
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 27 / 58
Overlap-Save and Overlap-Add Filtering of Long Data Sequences
Filtering of Long Data Sequences
Goal: FIR filtering: y(n) = x(n) ∗ h(n)
Two approaches to real-time linear filtering of long inputs:
Overlap-Add Method
Overlap-Save Method
Assumptions:
FIR filter h(n) length = M
Block length = L M
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 28 / 58
Overlap-Save and Overlap-Add Overlap-Add Method
Overlap-Add Method
Overlap-Add Method
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 29 / 58
Overlap-Save and Overlap-Add Overlap-Add Method
Overlap-Add Method
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)
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 30 / 58
Overlap-Save and Overlap-Add Overlap-Add Method
-1 10
n-2-3 2 3
1
x(n)
h(n)
6 87 96 87 9
*
h(n)*=
+
+ + . . .
h(n)*
h(n)*
10
-1 10
n-2-3 2 3 4 5
4 5
4 5
1
x (n)1
2
3
6 87 96 87 9
10
-1 10
n-2-3 2 3
1
x (n)
6 87 96 87 9
10
-1 10
n-2-3 2 3
1
x (n)
6 87 96 87 9
10
L=4
L=4
L=4
L=4
L=4
L=4
L=4 Input x(n) is divided
into non-overlapping
blocks xm(n) each of
length L.
Each input block
xm(n) is individually
filtered as it is received
to produce the output
block ym(n).
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 31 / 58
Overlap-Save and Overlap-Add Overlap-Add Method
Overlap-Add Filtering Stage
makes use of the N-DFT and N-IDFT where: N = L + M − 1
Thus, zero-padding of x(n) and h(n) that are of length
L, M < N is required.
The actual implementation of the DFT/IDFT will use the
FFT/IFFT for computational simplicity.
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 32 / 58
Overlap-Save and Overlap-Add Overlap-Add Method
Using DFT for Linear Convolution
Let xm(n) have support n = 0, 1, . . . , L − 1.
Let h(n) have support n = 0, 1, . . . , M − 1.
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.
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 33 / 58
Overlap-Save and Overlap-Add Overlap-Add Method
Linear Convolution via the DFT
Length of linear convolution result = Length of DFT
-1 10
n
x (n)
= x (n)
-2-3-4-5-6-7 2 3 4 5 6 7
1
2
-1 10
n-2-3-4-5-6-7 2 3 4 5 6 7
1
2
x (n)support length = 4 = N
no overlap
-1 10
n-2-3-4-5-6-7 2 3 4 5 6 7
x (n)
+
l=0
x (n-N)
+
l=1
+
x (n+N)
l=-1
+
x (n+2N)
l=-2
x (n-2N)
l=2
......
~
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 34 / 58
Overlap-Save and Overlap-Add Overlap-Add Method
-1 10
n-2-3 2 3
1
x(n)
h(n)
6 87 96 87 9
*
h(n)*=
+
+ + . . .
h(n)*
h(n)*
10
-1 10
n-2-3 2 3 4 5
4 5
4 5
1
x (n)1
2
3
6 87 96 87 9
10
-1 10
n-2-3 2 3
1
x (n)
6 87 96 87 9
10
-1 10
n-2-3 2 3
1
x (n)
6 87 96 87 9
10
L=4
L=4
L=4
L=4
L=4
L=4
L=4 Input x(n) is divided
into non-overlapping
blocks xm(n) each of
length L.
Each input block
xm(n) is individually
filtered as it is received
to produce the output
block ym(n).
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 35 / 58
Overlap-Save and Overlap-Add Overlap-Add Method
-1 10
n-2-3 2 3
1
x(n)
h(n)
6 87 96 87 9
*
=
+
+ + . . .
10
-1 10
n-2-3 2 3 4 5
4 5
4 5
1
y (n)1
2
3
6 87 96 87 9
10
-1 10
n-2-3 2 3
1
y (n)
6 7
6 8
7
9 10
-1 10
n-2-3 2 3
1
y (n)
6 87 96 87 9
10
L=4 L=4 L=4
L=4
L=4
L=4
M-1=2
L=4
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
M-1=2
M-1=2
ADD
to
next
block
ADD
to
next
block
Output blocks ym(n)
must be fitted together
appropriately to gener-
ate:
y(n) = x(n) ∗ h(n)
The support overlap
amongst the ym(n)
blocks must be ac-
counted for.
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 36 / 58
Overlap-Save and Overlap-Add Overlap-Add Method
Overlap-Add Addition Stage
From the Addititvity property, since:
x(n) = x1(n) + x2(n) + x3(n) + · · · =
∞
m=1
xm(n)
x(n) ∗ h(n) = (x1(n) + x2(n) + x3(n) + · · · ) ∗ h(n)
= x1(n) ∗ h(n) + x2(n) ∗ h(n) + x3(n) ∗ h(n) + · · ·
=
∞
m=1
xm(n) ∗ h(n) =
∞
m=1
ym(n)
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 37 / 58
Overlap-Save and Overlap-Add Overlap-Add Method
-1 10
n-2-3 2 3
1
x(n)
h(n)
6 87 96 87 9
*
=
+
+ + . . .
-1 0
n-2-3 1 2 3 6 8754 9 101 2 3 6 8754 9 10
1
=
10
-1 10
n-2-3 2 3 4 5
4 5
4 5
1
y (n)1
2
3
6 87 96 87 9
10
-1 10
n-2-3 2 3
1
y (n)
6 7
6 8
7
9 10
-1 10
n-2-3 2 3
1
y (n)
6 87 96 87 9
10
L=4 L=4 L=4
L=4
L=4
L=4
M-1=2
L=4
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
M-1=2
M-1=2
ADD
to
next
block
ADD
to
next
block
Output blocks ym(n)
must be fitted together
appropriately to gener-
ate:
y(n) = x(n) ∗ h(n)
The support overlap
amongst the ym(n)
blocks must be ac-
counted for.
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 38 / 58
Overlap-Save and Overlap-Add Overlap-Add Method
Input signal:
Output signal:
zeros
zeros
zeros
Add
points Add
points
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 39 / 58
Overlap-Save and Overlap-Add 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 Zero pad xm(n) to be of length N = L + M − 1.
4.2 Take N-DFT of xm(n) to give Xm(k), k = 0, 1, . . . , N − 1.
4.3 Multiply: Ym(k) = Xm(k) · H(k), k = 0, 1, . . . , N − 1.
4.4 Take N-IDFT of Ym(k) to give ym(n), n = 0, 1, . . . , N − 1.
5. Form y(n) by overlapping the last M − 1 samples of ym(n) with the first
M − 1 samples of ym+1(n) and adding the result.
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 40 / 58
Overlap-Save and Overlap-Add Overlap-Add Method
Overlap-Add Method: Cautionary Note
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?
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 41 / 58
Overlap-Save and Overlap-Add Overlap-Add Method
Overlap-Add Method: Cautionary Note
Output signal:
Add
points Add
points
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 42 / 58
Overlap-Save and Overlap-Add Overlap-Add Method
Overlap-Add Method: Cautionary Note
zeros
zeros
zeros
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 43 / 58
Overlap-Save and Overlap-Add Overlap-Save Method
Overlap-Save Method
Overlap-Save Method
Overlap-[Discard] Method
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 44 / 58
Overlap-Save and Overlap-Add 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) =
∞
l=−∞
xL(n − lN)
support=M + N − 1
, n = 0, 1, . . . , N − 1
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 45 / 58
Overlap-Save and Overlap-Add Overlap-Save Method
1
-1 10
n-2-3-4-5-6-7 2 3 4 5 6 7
1
2
N < L+M-1
overlap since
n-1 10-2-3-4-5-6-7 2 3 4 5 6 7
2
1
-1 10
n-2-3-4-5-6-7 2 3 4 5 6 7
+ +
+ + +
......
...
y (n+2N)L y (n-2N)L
y (n)L
y (n)L
Add and keep points only
at n=0, 1, ..., N-1
corruption from
previous repetitions
linear
convolution
result
circular
convolution
result
at n=M-1, M, ..., N-1
y (n)C
y (n)L=
L
y (n+N) L
y (n-N)
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 46 / 58
Overlap-Save and Overlap-Add Overlap-Save Method
Overlap-Save Method
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 n = 0, 1, . . . , M − 2
yL,m(n) n = M − 1, M, . . . , N − 1
where yL,m(n) = xm(n) ∗ h(n) is the desired output.
The first M − 1 points of a the current filtered output block
ym(n) must be discarded.
The previous filtered block ym−1(n) must compensate by
providing these output samples.
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 47 / 58
Overlap-Save and Overlap-Add Overlap-Save Method
Overlap-Save Input Segmentation Stage
1. All input blocks xm(n) are of length N = (L + M − 1) and
contain sequential samples from x(n).
2. Input block xm(n) for m > 1 overlaps containing the first M − 1
points of the previous block xm−1(n) to deal with aliasing
corruption.
3. For m = 1, there is no previous block, so the first M − 1 points
are zeros.
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 48 / 58
Overlap-Save and Overlap-Add Overlap-Save Method
Overlap-Save Input Segmentation Stage
point
overlap
point
overlap
zeros
Input signal blocks:
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 49 / 58
Overlap-Save and Overlap-Add Overlap-Save Method
Overlap-Save Input Segmentation Stage
x1(n) = {0, 0, . . . 0
M − 1 zeros
, x(0), x(1), . . . , x(L − 1)}
x2(n) = {x(L − M + 1), . . . x(L − 1)
last M − 1 points from x1(n)
, x(L), . . . , x(2L − 1)}
x3(n) = {x(2L − M + 1), . . . x(2L − 1)
last M − 1 points from x2(n)
, x(2L), . . . , x(3L − 1)}
...
The last M − 1 points from the previous input block must be saved
for use in the current input block.
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 50 / 58
Overlap-Save and Overlap-Add Overlap-Save Method
Overlap-Save Filtering Stage
makes use of the N-DFT and N-IDFT where: N = L + M − 1
Only a one-time zero-padding of h(n) of length M L < N is
required to give it support n = 0, 1, . . . , N − 1.
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.
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 51 / 58
Overlap-Save and Overlap-Add Overlap-Save Method
Using DFT for Circular Convolution
N = L + M − 1.
Let xm(n) have support n = 0, 1, . . . , N − 1.
Let h(n) have support n = 0, 1, . . . , M − 1.
We zero pad 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 yC,m(n), n = 0, 1, . . . , N − 1.
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 52 / 58
Overlap-Save and Overlap-Add Overlap-Save Method
Circular Convolution via the DFT
Length of linear convolution result > Length of DFT
1
-1 10
n-2-3-4-5-6-7 2 3 4 5 6 7
1
2
N < L+M-1
overlap since
n-1 10-2-3-4-5-6-7 2 3 4 5 6 7
2
1
-1 10
n-2-3-4-5-6-7 2 3 4 5 6 7
+ +
+ + +
......
...
y (n+2N)L y (n-2N)L
y (n)L
y (n)L
Add and keep points only
at n=0, 1, ..., N-1
corruption from
previous repetitions
linear
convolution
result
circular
convolution
result
at n=M-1, M, ..., N-1
y (n)C
y (n)L=
L
y (n+N) L
y (n-N)
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 53 / 58
Overlap-Save and Overlap-Add Overlap-Save Method
Overlap-Save Output Blocks
yC,m(n) =
aliasing n = 0, 1, . . . , M − 2
yL,m(n) n = M − 1, M, . . . , N − 1
where yL,m(n) = xm(n) ∗ h(n) is the desired output.
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 54 / 58
Overlap-Save and Overlap-Add Overlap-Save Method
Overlap-Save [Discard] Output Blocks
y1(n) = {y1(0), y1(1), . . . y1(M − 2)
M − 1 points corrupted from aliasing
, y(0), . . . , y(L − 1)}
y2(n) = {y2(0), y2(1), . . . y2(M − 2)
M − 1 points corrupted from aliasing
, y(L), . . . , y(2L − 1)}
y3(n) = {y3(0), y3(1), . . . y3(M − 2)
M − 1 points corrupted from aliasing
, y(2L), . . . , y(3L − 1)}
where y(n) = x(n) ∗ h(n) is the desired output.
The first 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 (University of Toronto) Overlap-Save and Overlap-Add 55 / 58
Overlap-Save and Overlap-Add Overlap-Save Method
Overlap-Save Output Stage
Discard
points Discard
points Discard
points
Output signal blocks:
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 56 / 58
Overlap-Save and Overlap-Add 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.
5.4 Discard the first M − 1 points of each output block ym(n).
6. Form y(n) by appending the remaining (i.e., last) L samples of each block
ym(n).
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 57 / 58
Overlap-Save and Overlap-Add Overlap-Save Method
Overlap-Save Method
Discard
points Discard
points Discard
points
Output signal blocks:
point
overlap
point
overlap
zeros
Input signal blocks:
Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 58 / 58

More Related Content

PPT
Ecte401 notes week3
PDF
2018 MUMS Fall Course - Bayesian inference for model calibration in UQ - Ralp...
PDF
Delayed acceptance for Metropolis-Hastings algorithms
PDF
Program on Quasi-Monte Carlo and High-Dimensional Sampling Methods for Applie...
PDF
QMC Program: Trends and Advances in Monte Carlo Sampling Algorithms Workshop,...
PDF
2018 MUMS Fall Course - Statistical Representation of Model Input (EDITED) - ...
PDF
QMC Program: Trends and Advances in Monte Carlo Sampling Algorithms Workshop,...
PDF
Lecture 15 DCT, Walsh and Hadamard Transform
Ecte401 notes week3
2018 MUMS Fall Course - Bayesian inference for model calibration in UQ - Ralp...
Delayed acceptance for Metropolis-Hastings algorithms
Program on Quasi-Monte Carlo and High-Dimensional Sampling Methods for Applie...
QMC Program: Trends and Advances in Monte Carlo Sampling Algorithms Workshop,...
2018 MUMS Fall Course - Statistical Representation of Model Input (EDITED) - ...
QMC Program: Trends and Advances in Monte Carlo Sampling Algorithms Workshop,...
Lecture 15 DCT, Walsh and Hadamard Transform

What's hot (20)

PDF
Nested sampling
PPT
Decimation in time and frequency
PDF
Quantum Search and Quantum Learning
PDF
Reinforcement Learning: Hidden Theory and New Super-Fast Algorithms
PDF
Can we estimate a constant?
PDF
Intro to Classification: Logistic Regression & SVM
PDF
Richard Everitt's slides
PDF
Lecture4 kenrels functions_rkhs
PDF
Introducing Zap Q-Learning
PDF
Coordinate sampler: A non-reversible Gibbs-like sampler
PDF
Maximum likelihood estimation of regularisation parameters in inverse problem...
PDF
QMC Program: Trends and Advances in Monte Carlo Sampling Algorithms Workshop,...
PDF
QMC Program: Trends and Advances in Monte Carlo Sampling Algorithms Workshop,...
PDF
QMC Program: Trends and Advances in Monte Carlo Sampling Algorithms Workshop,...
PDF
ABC with Wasserstein distances
PDF
Coordinate sampler : A non-reversible Gibbs-like sampler
PDF
2018 MUMS Fall Course - Statistical and Mathematical Techniques for Sensitivi...
PDF
ABC in Venezia
PDF
Simplified Runtime Analysis of Estimation of Distribution Algorithms
PDF
Bayesian hybrid variable selection under generalized linear models
Nested sampling
Decimation in time and frequency
Quantum Search and Quantum Learning
Reinforcement Learning: Hidden Theory and New Super-Fast Algorithms
Can we estimate a constant?
Intro to Classification: Logistic Regression & SVM
Richard Everitt's slides
Lecture4 kenrels functions_rkhs
Introducing Zap Q-Learning
Coordinate sampler: A non-reversible Gibbs-like sampler
Maximum likelihood estimation of regularisation parameters in inverse problem...
QMC Program: Trends and Advances in Monte Carlo Sampling Algorithms Workshop,...
QMC Program: Trends and Advances in Monte Carlo Sampling Algorithms Workshop,...
QMC Program: Trends and Advances in Monte Carlo Sampling Algorithms Workshop,...
ABC with Wasserstein distances
Coordinate sampler : A non-reversible Gibbs-like sampler
2018 MUMS Fall Course - Statistical and Mathematical Techniques for Sensitivi...
ABC in Venezia
Simplified Runtime Analysis of Estimation of Distribution Algorithms
Bayesian hybrid variable selection under generalized linear models
Ad

Similar to overlap add and overlap save method (20)

PDF
Circular convolution
PPTX
Overlap Add, Overlap Save(digital signal processing)
PDF
UIT1504-DSP-II-U9_LMS.pdf
PDF
Mlab i
PDF
c5.pdf
PDF
c5.pdf
PDF
A novel approach for high speed convolution of finite
PDF
DSP_2018_FOEHU - Lec 08 - The Discrete Fourier Transform
PDF
A novel approach for high speed convolution of finite and infinite length seq...
PDF
PDF
Properties of Discrete Fourier Transform(DFT).pdf
PPTX
Digital signal processing on arm new
PDF
Dft and its applications
PDF
DSP_FOEHU - MATLAB 04 - The Discrete Fourier Transform (DFT)
PPTX
The Discrete Fourier Transform by Group 7..pptx
PDF
Introduction to Signal Processing Orfanidis [Solution Manual]
PDF
Digital Signal Processing Lecture notes n.pdf
PPTX
Signal Processing Homework Help
Circular convolution
Overlap Add, Overlap Save(digital signal processing)
UIT1504-DSP-II-U9_LMS.pdf
Mlab i
c5.pdf
c5.pdf
A novel approach for high speed convolution of finite
DSP_2018_FOEHU - Lec 08 - The Discrete Fourier Transform
A novel approach for high speed convolution of finite and infinite length seq...
Properties of Discrete Fourier Transform(DFT).pdf
Digital signal processing on arm new
Dft and its applications
DSP_FOEHU - MATLAB 04 - The Discrete Fourier Transform (DFT)
The Discrete Fourier Transform by Group 7..pptx
Introduction to Signal Processing Orfanidis [Solution Manual]
Digital Signal Processing Lecture notes n.pdf
Signal Processing Homework Help
Ad

Recently uploaded (20)

PPTX
additive manufacturing of ss316l using mig welding
PDF
Well-logging-methods_new................
PPTX
Foundation to blockchain - A guide to Blockchain Tech
PPTX
Welding lecture in detail for understanding
PPTX
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
PPTX
CARTOGRAPHY AND GEOINFORMATION VISUALIZATION chapter1 NPTE (2).pptx
PPTX
Sustainable Sites - Green Building Construction
PPT
Project quality management in manufacturing
PPTX
CYBER-CRIMES AND SECURITY A guide to understanding
PDF
Model Code of Practice - Construction Work - 21102022 .pdf
PPTX
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
PDF
Mohammad Mahdi Farshadian CV - Prospective PhD Student 2026
PDF
Embodied AI: Ushering in the Next Era of Intelligent Systems
PDF
R24 SURVEYING LAB MANUAL for civil enggi
PDF
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
PDF
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
PPTX
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
PDF
Digital Logic Computer Design lecture notes
PDF
PRIZ Academy - 9 Windows Thinking Where to Invest Today to Win Tomorrow.pdf
PDF
composite construction of structures.pdf
additive manufacturing of ss316l using mig welding
Well-logging-methods_new................
Foundation to blockchain - A guide to Blockchain Tech
Welding lecture in detail for understanding
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
CARTOGRAPHY AND GEOINFORMATION VISUALIZATION chapter1 NPTE (2).pptx
Sustainable Sites - Green Building Construction
Project quality management in manufacturing
CYBER-CRIMES AND SECURITY A guide to understanding
Model Code of Practice - Construction Work - 21102022 .pdf
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
Mohammad Mahdi Farshadian CV - Prospective PhD Student 2026
Embodied AI: Ushering in the Next Era of Intelligent Systems
R24 SURVEYING LAB MANUAL for civil enggi
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
Digital Logic Computer Design lecture notes
PRIZ Academy - 9 Windows Thinking Where to Invest Today to Win Tomorrow.pdf
composite construction of structures.pdf

overlap add and overlap save method

  • 1. Overlap-Save and Overlap-Add Dr. Deepa Kundur University of Toronto Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 1 / 58 Overlap-Save and Overlap-Add Circular and Linear Convolution The Discrete Fourier Transform Pair DFT and inverse-DFT (IDFT): X(k) = N−1 n=0 x(n)e−j2πk n N , k = 0, 1, . . . , N − 1 x(n) = 1 N N−1 k=0 X(k)ej2πk n N , n = 0, 1, . . . , N − 1 Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 2 / 58 Overlap-Save and Overlap-Add Circular and Linear Convolution Important DFT Properties Property Time Domain Frequency Domain Notation: x(n) X(k) Periodicity: x(n) = x(n + N) X(k) = X(k + N) Linearity: a1x1(n) + a2x2(n) a1X1(k) + a2X2(k) Time reversal x(N − n) X(N − k) Circular time shift: x((n − l))N X(k)e−j2πkl/N Circular frequency shift: x(n)ej2πln/N X((k − l))N Complex conjugate: x∗(n) X∗(N − k) Circular convolution: x1(n) ⊗ x2(n) X1(k)X2(k) Multiplication: x1(n)x2(n) 1 N X1(k) ⊗ X2(k) Parseval’s theorem: N−1 n=0 x(n)y∗(n) 1 N N−1 k=0 X(k)Y ∗(k) Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 3 / 58 Overlap-Save and Overlap-Add Circular and Linear Convolution Circular Convolution x1(n) ⊗ x2(n) F ←→ X1(k)X2(k) Q: What is circular convolution? Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 4 / 58
  • 2. Overlap-Save and Overlap-Add Circular and Linear 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 -1 0 n-2-3 1 2 3 6 8754 9 101 2 3 6 8754 9 10 1 11 12 54 -1 10 n-2-3 2 3 1 6 87 96 87 9 10 11 12 54-1 0 n-2-3 1 1 2 3 6 87 9 10 11 12 Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 5 / 58 Overlap-Save and Overlap-Add Circular and Linear Convolution Circular Convolution Assume: x1(n) and x2(n) have support n = 0, 1, . . . , N − 1. x1(n) ⊗ x2(n) = N−1 k=0 x1(k)x2((n − k))N = N−1 k=0 x2(k)x1((n − k))N where (n)N = n mod N = remainder of n/N. Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 6 / 58 Overlap-Save and Overlap-Add Circular and Linear Convolution Modulo Indices and Periodic Repetition (n)N = n mod N = remainder of n/N Example: N = 4 n -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 (n)4 0 1 2 3 0 1 2 3 0 1 2 3 0 n N = integer + nonneg integer < N N 5 4 = 1 + 1 4 −2 4 = −1 + 2 4 Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 7 / 58 Overlap-Save and Overlap-Add Circular and Linear Convolution Modulo Indices and Periodic Repetition (n)N = n mod N = remainder of n/N Example: N = 4 n -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 (n)4 0 1 2 3 0 1 2 3 0 1 2 3 0 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)}. Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 8 / 58
  • 3. Overlap-Save and Overlap-Add Circular and Linear Convolution Overlap During Periodic Repetition A periodic repetition makes an aperiodic signal x(n), periodic to produce ˜x(n). ˜x(n) = ∞ l=−∞ x(n − lN) Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 9 / 58 Overlap-Save and Overlap-Add Circular and Linear Convolution Overlap During Periodic Repetition A periodic repetition makes an aperiodic signal x(n), periodic to produce ˜x(n). There are two important parameters: 1. smallest support length of the signal x(n) 2. period N used for repetition that determines the period of ˜x(n) smallest support length > period of repetition there will be overlap smallest support length ≤ period of repetition there will be no overlap ⇒ x(n) can be recovered from ˜x(n) Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 10 / 58 Overlap-Save and Overlap-Add Circular and Linear Convolution Periodic Repetition: Example N = 4 -1 10 n x (n) = x (n) -2-3-4-5-6-7 2 3 4 5 6 7 1 2 -1 10 n-2-3-4-5-6-7 2 3 4 5 6 7 1 2 x (n)support length = 4 = N no overlap -1 10 n-2-3-4-5-6-7 2 3 4 5 6 7 x (n) + l=0 x (n-N) + l=1 + x (n+N) l=-1 + x (n+2N) l=-2 x (n-2N) l=2 ...... ~ Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 11 / 58 Overlap-Save and Overlap-Add Circular and Linear Convolution Period Repetition: Example N = 4 1 =x(n) x (n) -1 10 n-2-3-4-5-6-7 2 3 4 5 6 7 1 2 support length = 6 > N overlap n-1 10-2-3-4-5-6-7 2 3 4 5 6 7 2 1 x (n) -1 10 n-2-3-4-5-6-7 2 3 4 5 6 7 l=0 l=1 + + l=-1 + + + l=-2 l=2 ...... ~ x (n) x (n-N)x (n+N) x (n+2N) x (n-2N) Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 12 / 58
  • 4. Overlap-Save and Overlap-Add Circular and Linear Convolution Modulo Indices and the Periodic Repetition Assume: x(n) has support n = 0, 1, . . . , N − 1. x((n))N = x(n mod N) = ˜x(n) = ∞ l=−∞ x(n − lN) Note: Because the support size and period size are the same, there is no overlap when taking the periodic repetition x((n))N. Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 13 / 58 Overlap-Save and Overlap-Add Circular and Linear Convolution Modulo Indices and the Periodic Repetition n x(n) 1 2 -1 10-2-3-4-5-6-7 2 3 4 5 6 7 Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 14 / 58 Overlap-Save and Overlap-Add Circular and Linear Convolution Modulo Indices and the Periodic Repetition 1 1 2 0 n x(n) 1 2 -1 10-2-3-4-5-6-7 2 3 4 5 6 7 Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 15 / 58 Overlap-Save and Overlap-Add Circular and Linear Convolution Modulo Indices and the Periodic Repetition 1 1 2 0 2 11 0 n x(n) 1 2 -1 10-2-3-4-5-6-7 2 3 4 5 6 7 x((n))N Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 16 / 58
  • 5. Overlap-Save and Overlap-Add Circular and Linear Convolution Modulo Indices and the Periodic Repetition 1 1 2 0 2 11 0 12 8 4 0 -4 13 9 5 1 -3 14 10 6 2 -2 15 11 7 3 -1 n x(n) 1 2 -1 10-2-3-4-5-6-7 2 3 4 5 6 7 x((n))N Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 17 / 58 Overlap-Save and Overlap-Add Circular and Linear Convolution Modulo Indices and the Periodic Repetition n -1 10-2-3-4-5-6-7 2 3 4 5 6 7 ... 1 2 x (n) ~ 1 1 2 0 2 11 0 12 8 4 0 -4 13 9 5 1 -3 14 10 6 2 -2 15 11 7 3 -1 n x(n) 1 2 -1 10-2-3-4-5-6-7 2 3 4 5 6 7 x((n))N Therefore x((n))N = ˜x(n). Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 18 / 58 Overlap-Save and Overlap-Add Circular and Linear Convolution Circular Convolution: One Interpretation Assume: x1(n) and x2(n) have support n = 0, 1, . . . , N − 1. To compute N−1 k=0 x1(k)x2((n − k))N (or N−1 k=0 x2(k)x1((n − k))N ): 1. Take the periodic repetition of x2(n) with period N: ˜x2(n) = ∞ l=−∞ x2(n − lN) 2. Conduct a standard linear convolution of x1(n) and ˜x2(n) for n = 0, 1, . . . , N − 1: x1(n) ⊗ x2(n) = x1(n) ∗ ˜x2(n) = ∞ k=−∞ x1(k)˜x2(n − k) = N−1 k=0 x1(k)˜x2(n − k) Note: x1(n) ⊗ x2(n) = 0 for n < 0 and n ≥ N. Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 19 / 58 Overlap-Save and Overlap-Add Circular and Linear Convolution Circular Convolution: One Interpretation N−1 k=0 x1(k) x2((n − k))N = N−1 k=0 x1(k) ˜x2(n − k) . . . which makes sense, since x((n))N = ˜x(n). Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 20 / 58
  • 6. Overlap-Save and Overlap-Add Circular and Linear Convolution Circular Convolution: Another Interpretation Assume: x1(n) and x2(n) have support n = 0, 1, . . . , N − 1. To compute N−1 k=0 x1(k)x2((n − k))N (or N−1 k=0 x2(k)x1((n − k))N ): 1. Conduct a linear convolution of x1(n) and x2(n) for all n: xL(n) = x1(n) ∗ x2(n) = ∞ k=−∞ x1(k)x2(n − k) = N−1 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 Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 21 / 58 Overlap-Save and Overlap-Add Circular and Linear Convolution Using DFT for Linear Convolution Therefore, circular convolution and linear convolution are related as follows: xC (n) = x1(n) ⊗ x2(n) = ∞ l=−∞ 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 (University of Toronto) Overlap-Save and Overlap-Add 22 / 58 Overlap-Save and Overlap-Add Circular and Linear Convolution Using DFT for Linear Convolution Let x(n) have support n = 0, 1, . . . , L − 1. Let h(n) have support n = 0, 1, . . . , M − 1. We can set N ≥ L + M − 1 and zero pad x(n) and h(n) to have support n = 0, 1, . . . , N − 1. 1. Take N-DFT of x(n) to give X(k), k = 0, 1, . . . , N − 1. 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. Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 23 / 58 Overlap-Save and Overlap-Add Filtering of Long Data Sequences Filtering of Long Data Sequences The input signal x(n) is often very long especially in real-time signal monitoring applications. For linear filtering via the DFT, for example, the signal must be limited size due to memory requirements. Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 24 / 58
  • 7. Overlap-Save and Overlap-Add Filtering of Long Data Sequences Filtering of Long Data Sequences Recall, for N = 8 the 8-FFT is given by X(0) X(1) X(2) X(3) X(4) X(5) X(6) X(7) x(1) x(5) x(3) x(7) x(0) x(4) x(2) x(6) Stage 1 Stage 2 Stage 3 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 W8 0 W8 0 W8 0 W8 0 W8 0 W8 1 W8 2 W8 2 W8 0 W8 2 W8 3 W8 Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 25 / 58 Overlap-Save and Overlap-Add Filtering of Long Data Sequences Filtering of Long Data Sequences All N-input samples are required simultaneously by the FFT operator. Complexity of N-FFT is N log(N). If N is too large as for long data sequences, then there is a significant delay in processing that precludes real-time processing. signal input signal output Data Acquisition Delay Data Processing Delay Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 26 / 58 Overlap-Save and Overlap-Add Filtering of Long Data Sequences Filtering of Long Data Sequences Strategy: 1. Segment the input signal into fixed-size blocks prior to processing. 2. Compute DFT-based linear filtering of each block separately via the FFT. 3. Fit the output blocks together in such a way that the overall output is equivalent to the linear filtering of x(n) directly. Main advantage: samples of the output y(n) = h(n) ∗ x(n) will be available real-time on a block-by-block basis. Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 27 / 58 Overlap-Save and Overlap-Add Filtering of Long Data Sequences Filtering of Long Data Sequences Goal: FIR filtering: y(n) = x(n) ∗ h(n) Two approaches to real-time linear filtering of long inputs: Overlap-Add Method Overlap-Save Method Assumptions: FIR filter h(n) length = M Block length = L M Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 28 / 58
  • 8. Overlap-Save and Overlap-Add Overlap-Add Method Overlap-Add Method Overlap-Add Method Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 29 / 58 Overlap-Save and Overlap-Add Overlap-Add Method Overlap-Add Method 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) Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 30 / 58 Overlap-Save and Overlap-Add Overlap-Add Method -1 10 n-2-3 2 3 1 x(n) h(n) 6 87 96 87 9 * h(n)*= + + + . . . h(n)* h(n)* 10 -1 10 n-2-3 2 3 4 5 4 5 4 5 1 x (n)1 2 3 6 87 96 87 9 10 -1 10 n-2-3 2 3 1 x (n) 6 87 96 87 9 10 -1 10 n-2-3 2 3 1 x (n) 6 87 96 87 9 10 L=4 L=4 L=4 L=4 L=4 L=4 L=4 Input x(n) is divided into non-overlapping blocks xm(n) each of length L. Each input block xm(n) is individually filtered as it is received to produce the output block ym(n). Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 31 / 58 Overlap-Save and Overlap-Add Overlap-Add Method Overlap-Add Filtering Stage makes use of the N-DFT and N-IDFT where: N = L + M − 1 Thus, zero-padding of x(n) and h(n) that are of length L, M < N is required. The actual implementation of the DFT/IDFT will use the FFT/IFFT for computational simplicity. Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 32 / 58
  • 9. Overlap-Save and Overlap-Add Overlap-Add Method Using DFT for Linear Convolution Let xm(n) have support n = 0, 1, . . . , L − 1. Let h(n) have support n = 0, 1, . . . , M − 1. 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. Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 33 / 58 Overlap-Save and Overlap-Add Overlap-Add Method Linear Convolution via the DFT Length of linear convolution result = Length of DFT -1 10 n x (n) = x (n) -2-3-4-5-6-7 2 3 4 5 6 7 1 2 -1 10 n-2-3-4-5-6-7 2 3 4 5 6 7 1 2 x (n)support length = 4 = N no overlap -1 10 n-2-3-4-5-6-7 2 3 4 5 6 7 x (n) + l=0 x (n-N) + l=1 + x (n+N) l=-1 + x (n+2N) l=-2 x (n-2N) l=2 ...... ~ Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 34 / 58 Overlap-Save and Overlap-Add Overlap-Add Method -1 10 n-2-3 2 3 1 x(n) h(n) 6 87 96 87 9 * h(n)*= + + + . . . h(n)* h(n)* 10 -1 10 n-2-3 2 3 4 5 4 5 4 5 1 x (n)1 2 3 6 87 96 87 9 10 -1 10 n-2-3 2 3 1 x (n) 6 87 96 87 9 10 -1 10 n-2-3 2 3 1 x (n) 6 87 96 87 9 10 L=4 L=4 L=4 L=4 L=4 L=4 L=4 Input x(n) is divided into non-overlapping blocks xm(n) each of length L. Each input block xm(n) is individually filtered as it is received to produce the output block ym(n). Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 35 / 58 Overlap-Save and Overlap-Add Overlap-Add Method -1 10 n-2-3 2 3 1 x(n) h(n) 6 87 96 87 9 * = + + + . . . 10 -1 10 n-2-3 2 3 4 5 4 5 4 5 1 y (n)1 2 3 6 87 96 87 9 10 -1 10 n-2-3 2 3 1 y (n) 6 7 6 8 7 9 10 -1 10 n-2-3 2 3 1 y (n) 6 87 96 87 9 10 L=4 L=4 L=4 L=4 L=4 L=4 M-1=2 L=4 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 M-1=2 M-1=2 ADD to next block ADD to next block Output blocks ym(n) must be fitted together appropriately to gener- ate: y(n) = x(n) ∗ h(n) The support overlap amongst the ym(n) blocks must be ac- counted for. Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 36 / 58
  • 10. Overlap-Save and Overlap-Add Overlap-Add Method Overlap-Add Addition Stage From the Addititvity property, since: x(n) = x1(n) + x2(n) + x3(n) + · · · = ∞ m=1 xm(n) x(n) ∗ h(n) = (x1(n) + x2(n) + x3(n) + · · · ) ∗ h(n) = x1(n) ∗ h(n) + x2(n) ∗ h(n) + x3(n) ∗ h(n) + · · · = ∞ m=1 xm(n) ∗ h(n) = ∞ m=1 ym(n) Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 37 / 58 Overlap-Save and Overlap-Add Overlap-Add Method -1 10 n-2-3 2 3 1 x(n) h(n) 6 87 96 87 9 * = + + + . . . -1 0 n-2-3 1 2 3 6 8754 9 101 2 3 6 8754 9 10 1 = 10 -1 10 n-2-3 2 3 4 5 4 5 4 5 1 y (n)1 2 3 6 87 96 87 9 10 -1 10 n-2-3 2 3 1 y (n) 6 7 6 8 7 9 10 -1 10 n-2-3 2 3 1 y (n) 6 87 96 87 9 10 L=4 L=4 L=4 L=4 L=4 L=4 M-1=2 L=4 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 M-1=2 M-1=2 ADD to next block ADD to next block Output blocks ym(n) must be fitted together appropriately to gener- ate: y(n) = x(n) ∗ h(n) The support overlap amongst the ym(n) blocks must be ac- counted for. Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 38 / 58 Overlap-Save and Overlap-Add Overlap-Add Method Input signal: Output signal: zeros zeros zeros Add points Add points Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 39 / 58 Overlap-Save and Overlap-Add 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 Zero pad xm(n) to be of length N = L + M − 1. 4.2 Take N-DFT of xm(n) to give Xm(k), k = 0, 1, . . . , N − 1. 4.3 Multiply: Ym(k) = Xm(k) · H(k), k = 0, 1, . . . , N − 1. 4.4 Take N-IDFT of Ym(k) to give ym(n), n = 0, 1, . . . , N − 1. 5. Form y(n) by overlapping the last M − 1 samples of ym(n) with the first M − 1 samples of ym+1(n) and adding the result. Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 40 / 58
  • 11. Overlap-Save and Overlap-Add Overlap-Add Method Overlap-Add Method: Cautionary Note 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? Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 41 / 58 Overlap-Save and Overlap-Add Overlap-Add Method Overlap-Add Method: Cautionary Note Output signal: Add points Add points Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 42 / 58 Overlap-Save and Overlap-Add Overlap-Add Method Overlap-Add Method: Cautionary Note zeros zeros zeros Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 43 / 58 Overlap-Save and Overlap-Add Overlap-Save Method Overlap-Save Method Overlap-Save Method Overlap-[Discard] Method Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 44 / 58
  • 12. Overlap-Save and Overlap-Add 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) = ∞ l=−∞ xL(n − lN) support=M + N − 1 , n = 0, 1, . . . , N − 1 Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 45 / 58 Overlap-Save and Overlap-Add Overlap-Save Method 1 -1 10 n-2-3-4-5-6-7 2 3 4 5 6 7 1 2 N < L+M-1 overlap since n-1 10-2-3-4-5-6-7 2 3 4 5 6 7 2 1 -1 10 n-2-3-4-5-6-7 2 3 4 5 6 7 + + + + + ...... ... y (n+2N)L y (n-2N)L y (n)L y (n)L Add and keep points only at n=0, 1, ..., N-1 corruption from previous repetitions linear convolution result circular convolution result at n=M-1, M, ..., N-1 y (n)C y (n)L= L y (n+N) L y (n-N) Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 46 / 58 Overlap-Save and Overlap-Add Overlap-Save Method Overlap-Save Method 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 n = 0, 1, . . . , M − 2 yL,m(n) n = M − 1, M, . . . , N − 1 where yL,m(n) = xm(n) ∗ h(n) is the desired output. The first M − 1 points of a the current filtered output block ym(n) must be discarded. The previous filtered block ym−1(n) must compensate by providing these output samples. Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 47 / 58 Overlap-Save and Overlap-Add Overlap-Save Method Overlap-Save Input Segmentation Stage 1. All input blocks xm(n) are of length N = (L + M − 1) and contain sequential samples from x(n). 2. Input block xm(n) for m > 1 overlaps containing the first M − 1 points of the previous block xm−1(n) to deal with aliasing corruption. 3. For m = 1, there is no previous block, so the first M − 1 points are zeros. Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 48 / 58
  • 13. Overlap-Save and Overlap-Add Overlap-Save Method Overlap-Save Input Segmentation Stage point overlap point overlap zeros Input signal blocks: Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 49 / 58 Overlap-Save and Overlap-Add Overlap-Save Method Overlap-Save Input Segmentation Stage x1(n) = {0, 0, . . . 0 M − 1 zeros , x(0), x(1), . . . , x(L − 1)} x2(n) = {x(L − M + 1), . . . x(L − 1) last M − 1 points from x1(n) , x(L), . . . , x(2L − 1)} x3(n) = {x(2L − M + 1), . . . x(2L − 1) last M − 1 points from x2(n) , x(2L), . . . , x(3L − 1)} ... The last M − 1 points from the previous input block must be saved for use in the current input block. Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 50 / 58 Overlap-Save and Overlap-Add Overlap-Save Method Overlap-Save Filtering Stage makes use of the N-DFT and N-IDFT where: N = L + M − 1 Only a one-time zero-padding of h(n) of length M L < N is required to give it support n = 0, 1, . . . , N − 1. 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. Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 51 / 58 Overlap-Save and Overlap-Add Overlap-Save Method Using DFT for Circular Convolution N = L + M − 1. Let xm(n) have support n = 0, 1, . . . , N − 1. Let h(n) have support n = 0, 1, . . . , M − 1. We zero pad 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 yC,m(n), n = 0, 1, . . . , N − 1. Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 52 / 58
  • 14. Overlap-Save and Overlap-Add Overlap-Save Method Circular Convolution via the DFT Length of linear convolution result > Length of DFT 1 -1 10 n-2-3-4-5-6-7 2 3 4 5 6 7 1 2 N < L+M-1 overlap since n-1 10-2-3-4-5-6-7 2 3 4 5 6 7 2 1 -1 10 n-2-3-4-5-6-7 2 3 4 5 6 7 + + + + + ...... ... y (n+2N)L y (n-2N)L y (n)L y (n)L Add and keep points only at n=0, 1, ..., N-1 corruption from previous repetitions linear convolution result circular convolution result at n=M-1, M, ..., N-1 y (n)C y (n)L= L y (n+N) L y (n-N) Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 53 / 58 Overlap-Save and Overlap-Add Overlap-Save Method Overlap-Save Output Blocks yC,m(n) = aliasing n = 0, 1, . . . , M − 2 yL,m(n) n = M − 1, M, . . . , N − 1 where yL,m(n) = xm(n) ∗ h(n) is the desired output. Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 54 / 58 Overlap-Save and Overlap-Add Overlap-Save Method Overlap-Save [Discard] Output Blocks y1(n) = {y1(0), y1(1), . . . y1(M − 2) M − 1 points corrupted from aliasing , y(0), . . . , y(L − 1)} y2(n) = {y2(0), y2(1), . . . y2(M − 2) M − 1 points corrupted from aliasing , y(L), . . . , y(2L − 1)} y3(n) = {y3(0), y3(1), . . . y3(M − 2) M − 1 points corrupted from aliasing , y(2L), . . . , y(3L − 1)} where y(n) = x(n) ∗ h(n) is the desired output. The first 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 (University of Toronto) Overlap-Save and Overlap-Add 55 / 58 Overlap-Save and Overlap-Add Overlap-Save Method Overlap-Save Output Stage Discard points Discard points Discard points Output signal blocks: Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 56 / 58
  • 15. Overlap-Save and Overlap-Add 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. 5.4 Discard the first M − 1 points of each output block ym(n). 6. Form y(n) by appending the remaining (i.e., last) L samples of each block ym(n). Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 57 / 58 Overlap-Save and Overlap-Add Overlap-Save Method Overlap-Save Method Discard points Discard points Discard points Output signal blocks: point overlap point overlap zeros Input signal blocks: Dr. Deepa Kundur (University of Toronto) Overlap-Save and Overlap-Add 58 / 58