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.