Fast Time-Domain Volterra Filtering

Transcription

Fast Time-Domain Volterra Filtering
Fast Time-Domain Volterra Filtering
H ARALD E NZINGER1 K ARL F REIBERGER1 G ERNOT K UBIN1 C HRISTIAN VOGEL1,2
[email protected] [email protected] [email protected] [email protected]
1
Signal Processing and Speech Communication Laboratory, Graz University of Technology, Austria
2
FH Joanneum - University of Applied Sciences, Austria
Abstract
3. Methods of Computation
• Reuse - computes input products & output samples
• Nonlinear filtering with less multiplications
• Fast method for input products (1 mult./product)
• Fast method for output samples (1 mult./param.)
y[n] =
imax
X
h[i] Φi [n]
Φi [n] = Φj [n] x[n − mp ]
i=0
• Horner - computes output samples only
M
X
x[n − m1 ] g1 [n, m1 ]
y[n] =
1. Introduction
• Volterra series combines convolution and polynomial
y[n] =
M
P
X
X
···
M
X
hp [m1 , . . . , mp ]
mp =0
p=1 m1 =0
p
Y
m1 =0
g1 [n, m1 ] = h1 [m1 ] +
x[n − ml ]
l=1
g2 [n, m1 , m2 ] = h2 [m1 , m2 ] +
..
.
p
• Iterate through non-redundant input products
- Nested loop
p i
j m1
- Combinatoric
0 −
0
- Lookup-table
1 1 −
1
- Hard-coded
2 −
2
P
2
P
3
i . . . kernel index
j . . . reuse / projection index
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
M
X
x[n − m3 ] g3 [n, m1 , m2 , m3 ]
m3 =m2
gP [n, m1 , . . . , mP ] = hP [m1 , . . . , mP ]
2. Methods of Traversing
P
x[n − m2 ] g2 [n, m1 , m2 ]
m2 =m1
• Universal approximator for nonlinear systems with memory
M
X
0
0
0
1
1
2
3
3
3
4
4
5
6
6
7
8
m2
−
−
−
0
1
2
1
2
2
0
0
0
1
1
2
1
1
2
2
0
0
0
1
1
2
0
0
0
0
0
0
1
1
1
2
m3
−
−
−
−
−
−
−
−
−
0
1
2
1
2
2
1
2
2
2
3
2
1
j
3
3
3
4
4
..
.
0
0
0
..
.
−
−
−
m
0
1
2
1
2
..
.
0
1
2
..
.
0
1
2
i
9
10
11
12
13
..
.
3
4
5
..
.
0
1
2
Operation
g[3] ← h[3] + x[n] h[9]
g[3] += x[n − 1] h[10]
g[3] += x[n − 2] h[11]
g[4] ← h[4] + x[n − 1] h[12]
g[4] += x[n − 2] h[13]
..
.
g[0] ← h[0] + x[n] g[3]
g[0] += x[n − 1] g[4]
g[0] += x[n − 2] g[5]
..
.
y[n] ← x[n] g[0]
y[n]+= x[n − 1] g[1]
y[n]+= x[n − 2] g[2]
Formula
g[j] = h[j]
X
x[n − m] h[i]
+
m,i
g[j] = h[j]
X
x[n − m] g[i]
+
m,i
y[n] =
X
x[n − m] g[m]
m
Conclusion
• Always faster than direct computation
• Trade-off between speed and flexibility
• Implementation in C shows a speedup up to 5
4. Evaluation of Runtime
• We implemented 16 algorithms in C (4 methods of traversing × 4 methods of computation).
• We swept over order and memory with the number of parameters within {3, 9, 19, 34, 55, 83, 119, 164, 219, 285, 363, 454}.
• The source code is available at www.spsc.tugraz.at/tools/fast-time-domain-volterra-filtering.
Lookup-Table
5
0
1 2 3 4 5 6 7 8 9 10 11 12
Order | Memory = 2
0
Order | Memory = 2
0
4
2
0
1
0
1 2 3 4 5 6 7 8 9 10 11 12
Order | Memory = 2
2
1
0
Direct 2
y[n] only
Horner
y[n] only
1
0
0 1 2 3 4 5 6 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9 10 11
Memory | Order = 3
Memory | Order = 3
Memory | Order = 3
Memory | Order = 3
Signal Processing & Speech Communication Lab
Graz University of Technology
Inffeldgasse 16c, A-8010 Graz, Austria
http://www.spsc.tugraz.at
Reuse
y[n] Φi [n]
Order | Memory = 2
2
3
µs / sample
µs / sample
2
Direct 1
y[n] Φi [n]
2
1 2 3 4 5 6 7 8 9 10 11 12
6
4
5
1 2 3 4 5 6 7 8 9 10 11 12
6
3
µs / sample
10
0
Hard-Coded
10
µs / sample
µs / sample
µs / sample
10
µs / sample
Nested Loop
15
µs / sample
Combinatoric
20
The research leading to these results has received funding from the FFG Competence Headquarter program
under the project number 4718971.