I'm trying to understand how a dynamic convolution model relates to something like a Volterra series, and what kinds of effects the latter can capture that the former can't (and vice versa). By dynamic convolution, I mean a system where the impulse response varies with the amplitude of an impulse.
I care only about dynamic convolutions that are well-behaved and "smooth" in some sense, i.e. where the impulse response varies continuously or smoothly as a function of the amplitude.
I have this intuition that a Volterra series with nonzero coefficients only on the diagonals are somehow related to dynamic convolutions. In other words, a series that reduces to the following:
$y = h_0 + h_1 \ast x + h_2 \ast x^2 + h_3 \ast x^3 + ...$
where there are never any terms like $x[t] \cdot x[t-1]$ and so on.
I'm curious if I'm on the right track with that, and in general, whether any dynamic convolution can be transformed into a Volterra series in that form or vice versa.
Answer
A flavor of dynamic convolution (is that a trademark by the way?) has a different impulse response $g_i$ associated with each range of instantaneous input. A number of ranges can be defined by fuzzy membership functions $f_i(x)$ (Fig. 1).
Figure 1. Amplitude ranges that each use a different convolution kernel.
Omitting time indices, the input $x$ and output $y$ are related by:
$$y = \sum_{i=1}^Ng_i\ast \left(f_i\small(x\small)\times x\right).$$
In the notation used, convolution has higher precedence than summation. Reading the signal flow from the above, $f_i(x)\times x$ is a memoryless waveshaper. It is followed by regular convolution with $g_i$, and finally, the outputs of the convolutions are summed. For a practical, limited absolute input amplitude, well-behaved waveshapers, such as the ones needed here, can be approximated to arbitrary precision by polynomials. With the appropriate polynomial series with coefficients $a_{i,j}$:
$$ = \sum_{i=1}^N g_i\ast\left(\sum_{j=0}^\infty a_{i,j}\times x^j\right),$$
and reorganizing:
$$= \sum_{j=0}^\infty\left(\sum_{i=1}^N a_{i,j}\times g_i\right) \ast x^j.$$
Recognizing $h_j = \sum_{i=1}^N a_{i,j}\times g_i$ we have your diagonal Volterra series:
$$= \sum_{j=0}^\infty h_j \ast x^j.$$
Unfortunately, polynomials are not very good at approximating functions of compact support, like those needed here (at least before combining the ranges), so for a reasonable level of error a diagonal Volterra series approximation of dynamic convolution may require taking quite large powers of the input signal, which is computationally expensive and can lead to numerical problems.
No comments:
Post a Comment