Convolution is pretty much just sliding 2 lists along each other and summing their element wise multiplication. The general equation for the $t^{th}$ result is: $$(f*g)(t) = \int^{\infty}_{-\infty}f(\tau)g(t-\tau)d\tau$$ Properties Convolution has a couple of interesting properties, which boil down to it being commutative: $f * g = g * f$ - I make use of this in the convolve2() function, as it makes things easier for me to understand $\int (f * g) = \int g \cdot \int f$.