# How can convolution be a linear and invariant operation?

I'm having a slight breakdown right now with a seemingly simple question. Say I have a system that convolves an input function with itself to produce an output function:

$$g(x) = f(x) ∗ f(x)$$

I've heard countless times that convolution is a linear operation and just assumed it was fact. However, I'm trying to understand how this is possible.

In my system above, it doesn't seem like this system could be linear since convolution contains multiplication. So multiplying an input signal with itself can't possibly be linear. However, it would appear to be shift invariant.

Am I correct in my logic? I seem to have a misunderstanding of convolution being a linear operation.

• Highly recommend this, particularly input-side algorithm. Familiarity with physical intuition of a system's impulse response is recommended. – OverLordGoldDragon Feb 2 at 15:19
• Please don't write $f(x)\star f(x)$. The correct form is $g(x) = (f\star f)(x)$, or simply $g = f\star f$. – leftaroundabout Feb 2 at 23:41
• @leftaroundabout Can you explain why $f(x)⋆f(x)$ is incorrect form? – Izzo Feb 3 at 19:43
• $f(x)$ is just a single value of the function, i.e. a number. You can't convolute numbers. What you convolute are the functions themselves, and the function is just $f$ or, written with explicit argument, $x\mapsto f(x)$. Therefore, it needs to be $f\star f$. – leftaroundabout Feb 3 at 20:00

Convolution of an input signal with a fixed impulse response is a linear operation. However, if the input-output relation of a system is

$$y(t)=(x*x)(t)\tag{1}$$

then the system is non-linear, which is straightforward to show. Similarly, any convolution with a kernel that depends on the input signal is a non-linear operation.

On the other hand, a system with input-output relation

$$y(t)=(x*h)(t)\tag{2}$$

is linear (and time-invariant) because it convolves any input signal $$x(t)$$ with a fixed impulse response $$h(t)$$, which is independent of the input signal.

• Convolution with impulse responses is what I'm familiar with which is why this caught me off guard, however, it seems like my intuition regarding linearity for this system was correct.. Would I be correct to assume my system is shift invariant though? – Izzo Feb 2 at 16:06
• @Izzo: The system in Eq. $(1)$ of my answer is not shift-invariant. Just write down the output for input $x(t)$ and then for input $x(t-T)$. – Matt L. Feb 2 at 16:42
• Maybe I'm just slow today, but how would I write the output as a function of shift T? – Izzo Feb 2 at 19:20
• @Izzo: Just define a new input signal $x_2(t)=x(t-T)$ and write down the corresponding output signal $y_2(t)$. If it equals $y(t-T)$ (with $y(t)$ being the response to $x(t)$) then it's shift-variant, otherwise it isn't. – Matt L. Feb 2 at 20:09
• @Izzo: That's true, but the problem is that $f(x-N)$ doesn't generate $g(x-N)$ for the system you described in your question. Just take a simple example like a $f(x)$ being a rectangular pulse. If you shift it to $f(x-N)$, the convolution with itself will be shifted by $2N$, not only by $N$. – Matt L. Feb 2 at 21:28

Your problem comes about because you're pondering the convolution of a signal by itself: $$g(x) = f(x) * f(x)$$

So, yes, if you had a block diagram where you collect f(x) from the æther and then somehow magically convolve it by itself (which can't be done physically because it would require time-reversing $$f(x)$$, which requires looking into the future), then yes, that would be nonlinear.

But that's not what convolution is about

Convolution is about taking an actual signal (probably what you mean by your $$f(x)$$), and running it through a system, who's behavior is defined by an impulse response. An impulse response is, in a sense, a signal, but it's not an actual physical signal -- it's a full and complete description of how a linear, time-invariant system behaves in response to a signal.

Here's a fairly far-fetched analogy, that isn't coming out nearly as simple and clear as I'd like*: say you live on a farm, where goats weigh 1/3 as much as sheep, and you have a scale that reads out in goat-weights. If you put three sheep on the scale, then the number you read is $$3 * 3 = 9$$. What it looks like you have done is multiply three by three (a nonlinear operation if $$3$$ is a signal) and gotten 9. What you have actually done is multiply a signal (three sheep-weights) by a fixed characteristic of a signal (one estimated-goat-weight / actual-goat-weight) and gotten an output. Had you put four sheep on the scale, only one part of your calculation would change -- the "three goats per sheep" part would still be a three.

So in your original example, you're trying to convolve a signal "by itself". That doesn't happen. You may convolve a signal by an impulse response that happens to be equal to that signal -- and even I, in a classroom setting, may tell the class that I'm "convolving the signal by itself", only to have to make the above clarification.

You'll have occasion to find the autocorrelation of a signal, which looks a lot like convolution (it looks like $$A_f(x) = f(x) * f(-x)$$, in fact) and for which you sometimes trick a math package into doing because it doesn't have a built-in autocorrelation function.

You sometimes have occasion to find out what happens when you feed a filter with a signal that happens to match its impulse response -- but then you're feeding one distinct signal into a filter that's got eerily similar characteristics to the signal**.

You may even build a system that involves delay lines and multiplications and whatnot that "convolves a signal by itself" -- but then you're building a filter on the fly that gives itself an impulse response that matches a delayed version of a collected signal, and convolving.

But you never really convolve a signal by itself.

* I should never, ever, get on these boards before the caffeine has kicked in. Yet, I regularly do.

** Well, probably quite intentionally similar characteristics, but -- caffeine.

Standard multiplication by a scalar $$s$$ is a linear operation, since:

$$s\times(a\times x+b\times y)= a\times (s\times x)+ b\times(s\times y)$$

In other words, multiplying a linear combination by a scalar is the same as doing a linear combination of multiplies. Here, the multiplication is a very simple example of a system(a amplifier).

Your question amounts to wonder whether the multiplication is not linear, because $$x\times x$$ is quadratic. A system which would convolve a signal by itself would obviously be non linear, but the underlying operation can still be.