Convolution: An Easy Way to Understand it.

Google’s definition of convolution is:

a thing that is complex and difficult to follow.

Basically… its complicated.

In order to wrap my average brain around this complex topic, I’ve attempted to define and relate convolution in a simple, digestible essay.

Definition

Convolution is a way of combining two relationship functions and tracking how they relate to each other over time.

Its common to convolve relationships when developing useful real-world systems. Convolution has a number of applications, and is the most important tool in digital signal processing. Some of these applications include:

  • GPS location calculation

  • Seismic signals for oil exploration

  • Speech processing to remove background reflections

In order to get a more comprehensive understanding of convolution, we’ll break down each requirement in a system and discuss how they all play a part in the convolution process. We’ll use a real-world banking system for our example, where someone puts money into a bank account with a certain yield return over time. The system can be broken down as x(t) representing the amount of dollars a person puts into the bank system H, which outputs more money over time, represented as h(t)

Impulse

The input to a system needs to be a known, controlled signal. In the banking example, the impulse is the amount of dollars a person puts into the bank. The bank will base its system of operation based on the known amount of dollars being deposited… otherwise there is no system to operate.

Linear System

A system that receives inputs must behave linearly in order for it to produce a predictable result. For our example, each dollars (impulse response) from a bank customer deposits, the bank will pay the customer a 5% interest per year.

This is a linear system as the amount of dollars the bank pays its customers is a mathematical calculation of the input amount of dollars it receives from its customers. Without this mathematical relationship, there is no incentive for a customer to deposit their dollars to a system that will generate a random amount of (potentially negative!) output.

Impulse Response

The impulse response is the output of a linear system when an impulse signal is introduced to it. Using the banking system, customer A deposits $100 [x(t)] into a bank [H], and will have earned a total of $5 of interest payments from the bank [H] after one year. The total balance in customer A’s bank account will result in a total of $105 [h(t=1), where t is denominated in years]. After 2 years [h(2)], their balance will be $110.25.

A few more impulse response results:

  • h(3) = $115.76

  • h(4) = $121.55

  • h(100) = $13,150.13

The output of the bank H can be graphed visually:

If the customer were to double their initial impulse to $200 or even triple it to $300, we can plot those impulse responses and compare its return that the system bank H would yield the customer vs the $100 deposit:

As you can see, the impulse to a system can yield dramatically different impulse responses, however the system H remains constant/linear.

Now let’s get a little more complex.

What if customer A makes multiple deposits every year? For instance, a smart customer might make $100 deposits every quarter of a year to see the compounding interest benefit of a 5% yield more quickly.

In this situation x(t) is defined as the value of a consistent and periodic impulse signal. Basically it’s a continuous signal of $100 every 3 months being deposited into the system bank H.

Each pillar represents its own graph, and visually adding each graph/impulse together in an equation:

This is also represented as the ugly mathematical equation:

x[n] = Σ x[k] * h[n-k] — where the summation is taken from k=0 to k=infinity

This equation basically reads as such [from left to right]: The function x(t), where t = k (which is represented as a single $100 deposit instance anywhere on the time axis), convoluted with the system H (the bank account amount) at the previous instance of k.

We can now plot the graph of h(t) over the course of 100 years with an impulse of x(t)=100+100*4*t, where t is in years.

Now we’re saving $$$…

Now let’s get even more complex.

Jim, John and Josh are customers at a bank H, and each opens up a savings account of 5% interest.

Jim commits himself to making one deposit of $100 every year, but also wants to withdraw $100 every year as well. He’s going to space these out evenly throughout the year so that the function x(t) of deposits are graphically displayed as such:

John commits himself to making two deposits of $100 every year, but also wants to withdraw $200 every year as well. He’s going to space these out as two deposits in the first half of the year, and one withdrawal at the end of the year, so his function x(t) of deposits are graphically displayed as such:

Josh commits himself to making SIX deposits of $100 every year, but also wants to withdraw $600 every year as well. He’s going to space these out as six deposits in the first half of the year, and one withdrawal at the end of the year, so his function x(t) of deposits are graphically displayed as such:

As you can see, the input function x(t) for each customer is different:

When convolving each of these separately into the bank function H, of which has a 5% annual yield, each produce a different actual yield in $ despite the amount of investment being equal between all three customers!

(This graph can display the results over a 30-year period, as after 100-years it will be hard to distinguish the difference on a single graph between each customer’s balance.)

Make sense yet?

I hope by this point, you’ve started to grasp at the fundamental idea of convolution and why its such an integral part of how real-world mathematical systems work.

In the future, I will use the Lyceum tool to demonstrate different applications that convolution will provide engineers when designing, developing and manufacturing their electronics systems.

In the mean time, if there is another example you can think of and would like to share, please reach out to me at josh@thelyceum.io, and/or leave a comment below!





Previous
Previous

The Lyceum: Audio Engineer Use Cases