Is there any formula or expansion for

$$a(t)*[b(t) \cdot c(t)]$$

$$a(t) \cdot[b(t)*c(t)]$$

where $*$ denotes the convolution?

By expansion I mean something like $a(t)\cdot[b(t)+c(t)]=a(t)b(t)+a(t)c(t)$.

  • 2
    $\begingroup$ Have you tried writing down the convolution integral? Then you'll see it right away (namely that there's not much you can do). $\endgroup$
    – Matt L.
    Jul 2, 2019 at 15:08
  • 1
    $\begingroup$ In Frequency domain, it will translate to $A\cdot(B*C)$, if that helps any. $\endgroup$
    – Florian
    Jul 2, 2019 at 15:44
  • 3
    $\begingroup$ @Florian "...translate to $A\cdot(B*C)$...." and then we all can ponder the dual question "Does multiplication distribute over convolution?" $\endgroup$ Jul 3, 2019 at 20:45

2 Answers 2


Addition is (by nature) additive. Binary operations like multiply and convolution are both somehow of multiplicative structure. Thus, I suspect there is no generic distributivity (apart for Boole or Boolean algebras, where the restriction on allowed values shrinks the problem, see below).

However, there is a sort of commutativity of multiply and convolution, as follows. It is interesting to first look at such operator properties from an algebraic point of view. Properties are for instance, for a generic operator binary $\bigcirc$:

  • commutativity: $a \bigcirc b = b \bigcirc a $
  • associativity: $a \bigcirc( b \bigcirc c) = (a \bigcirc b) \bigcirc c $
  • alternativity: $a \bigcirc( a \bigcirc b) = (a \bigcirc a) \bigcirc b $ or $(a \bigcirc b) \bigcirc b = a \bigcirc (b \bigcirc b)$
  • flexibility: $(a \bigcirc b) \bigcirc a = a \bigcirc (b \bigcirc a)$

Distributivity of a binary operator $\diamond$ over operator $\bigcirc$ is more involved: it can be left-distributed: $$a \diamond (b \bigcirc c) = (a \diamond b) \bigcirc (a \diamond c)$$ or right-distributed: $$(a \bigcirc b) \diamond c = (a \diamond c) \bigcirc (b\diamond c)$$

Division is right-distributive over add, not left-distributive. Distributivity of multiply over add is at play in rings and fields. But the converse does not apply. There are mathematical structures where two binary operators distribute over each other, like Boolean or switching algebras. Apart from that, I cannot remember of standard cases of multiply-like $\ast$ or $\cdot$ that would distribute. However, I will details some specific cases, useful to signal processing, ending with the Hilbert transform and Bedrosian theorem.

In the case of multiplication and convolution, or $a$ scalar, this is associative, as :

$$a.[b(t)\cdot c(t)] = [a.b(t)]\cdot c(t)= b(t)\cdot [a.c(t)]$$ and $$a.[b(t)\ast c(t)] = [a.b(t)]\ast c(t)= b(t)\ast [a.c(t)]$$

You see that you cannot directly"distribute it", as this would become "bilinear". Convolution and point-wise product are linear. So, if you consider that $c(t)$ (or $b(t)$ by symmetry), there exists a linear operator $\Lambda$ such that:

$$\Lambda(c(t)) = a(t)\ast[b(t)\cdot c(t)] $$

Whether $\Lambda$ has a simple closed form expression is a difficult matter. As a side note, where $\mathcal{H} $ denotes the Hilbert transform, the Bedrosian theorem (A product theorem for Hilbert transforms states that (under some conditions):

$$\mathcal{H}(a(t)e^{i\theta t}) = a(t)(\mathcal{H}(e^{i\theta t}))\,.$$

where $a(t)$ is an (low-pass) envelope, and $e^{i\theta t}$ a modulation. More generally, if a low-pass signal $x_\flat$ and a high-pass $x_\sharp$ have non-overlapping spectra, then under Bedrosian theorem:

$$\mathcal{H}(x_\flat(t)\cdot x_\sharp(t))=x_\flat(t)\cdot \mathcal{H}(x_\sharp(t))$$

Now, let us remind that the Hilbert transform can be seen as the convolution with the distribution ($\operatorname {p.v.}$ is the Cauchy principal value):

$$h(t) =\operatorname {p.v.} {\frac {1}{\pi t}}$$


$$h(t) \ast (x_\flat(t)\cdot x_\sharp(t)) = x_\flat(t) \cdot(h(t)\ast x_\sharp(t))$$

This is the only practical case I can remember of a switching of operators in signal processing, more a form of limited commutativity.

  • 1
    $\begingroup$ Is it right to say, if we have if c.c = 1, and y = h*c where * denotes to convolution. Then can we say that c.y = h ? $\endgroup$ Jan 24, 2020 at 16:20
  • $\begingroup$ Yep .. I mean pointwise product ... $\endgroup$ Mar 27, 2020 at 14:36
  • $\begingroup$ How, could you please explain more ? $\endgroup$ May 24, 2020 at 5:23
  • $\begingroup$ That would mean that one could identify every filter $h$ with only one unit sequence $\endgroup$ May 24, 2020 at 9:13
  • 1
    $\begingroup$ You mean I do it as a new question ? $\endgroup$ May 24, 2020 at 15:18

Let $a(t) = [1, 2], b(t) = [2, 3], c(t) = [-1, 1]$. Denote by $.$ point-wise multiplication and denote by $*$ convolution as computed by Python in the mode "same" (that is: the output array is in the same length as the inputs). $$ a(t) * (b(t) . c(t)) = [1, 2] * [-2, 3] = [-2, -1] $$ but $$ (a(t) * b(t)) . c(t) = ([1,2]*[2,3]) . [-1,1] = [2, 7] . [-1,1] = [-2, 7] $$ so $a(t) * (b(t).c(t)) \ne (a(t)*b(t)).c(t)$. You can verify it by the following Python code:

>>> import numpy as np
>>> a = np.array([1,2])
>>> b = np.array([2,3])
>>> c = np.array([-1,1])
>>> d = b*c
>>> d
array([-2,  3])
>>> np.convolve(a, d, 'same')
array([-2, -1])
>>> np.convolve(a, b, 'same')    
array([2, 7])
>>> np.convolve(a, b, 'same') * c
array([-2,  7])

Therefore, I think the answer to your question is negative (unless $c(t)=c$ is a constant scalar).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.