CONVOLUTION ATLAS 01 · DISCRETE LINEAR CONVOLUTION
Flip. Slide. Multiply. Sum.
Watch one output form, or add the shifted kernels. Same samples, same convolution.
These sliders translate every sample and the complete convolution by the same amount. To add or remove samples, edit Start, End or Count in the sample fields.
Original input, original kernel, and their complete linear convolution. Each bar is one sample.
Products for the selected output
| \(j\) | \(k-j\) | \(a[j]\) | \(b[k-j]\) | Product |
|---|
Each input sample scales a kernel and shifts it by its index. Add the copies to form the output.
Selected product and output · matching plot colours
Selected product · gold ringsOutput at kExample formulas
δ₀(t) = 1 at t = 0 and 0 elsewhere. Each term is one bar at its stated position. In indexed sums, aᵢ and bᵣ are the plotted amplitudes on the common calculation grid at positions jᵢ and ℓᵣ. These formulas follow your edits; displayed decimals are rounded.
The complete output is visible throughout the sliding view. Gold rings connect the selected factors and their output. In the copy view, solid purple stems show the running sum and hollow stems show the complete reference. Vertical scales are labelled; copy rows share one scale. Magnification changes bar height, not values. Long lists show a selection of stems and labels; computation uses every sample.
Two ways to see the same sum
Hold \(k\) fixed: reverse the kernel, move it to \(k\), then multiply the aligned samples and add. The first three rows use the summation index \(j\). Their sum creates one sample on the output axis \(k\).
One kernel copy per input sample
Hold \(j\) fixed instead. The sequence \(a[j]\,b[k-j]\) is a kernel shifted by \(j\) and scaled by \(a[j]\). Adding these sequences over \(j\) gives every output at once.
Conventions, sources & later lessons
Finite discrete linear convolution on one common sampling grid, zero outside the listed intervals and no wraparound. Input source samples are joined by linear interpolation before sampling the working grid. If Lₐ and Lᵦ are the positive integer interval lengths, set g = gcd(Lₐ,Lᵦ), h to the finer source spacing, and Δ = g / ceil(g/h). This fits both intervals and is at least as fine as either source. Single-sample factors remain single samples. If both source spacings already match, their samples are unchanged. The plotted sequences and formulas use the working grid. Each pair contributes its product at k = j + ℓ; pairs at the same position are added. There are Nₐ + Nᵦ − 1 regularly spaced outputs. Grid counts and position coincidences use exact integer arithmetic. Values are floating point. The output endpoints are the sums of the input endpoints. Actual nonzero support may be smaller because of zeros or cancellation. The finite sum is the exact mathematical definition. Decimal computations use floating-point arithmetic; displayed values are rounded to 6 significant digits. Half-integer inputs have exactly represented products and sums within the lesson’s limits. Stems represent discrete samples.
The visual constructions follow WirelessPi’s convolution explanation and Lucy’s illustrated examples. Diagrams and lesson text here are newly created. The overlay, product and output layout also follows the Rose-Hulman DSP First convolution demo. The additional worked example comes from Electrical Academia, with Mark L. Fowler. Other intuition sources include BetterExplained and Wikipedia.
Changing Count resamples values by linear interpolation within fixed endpoints, using stable anchors from the last amplitude or interval edit. Extending an interval repeats the nearest boundary value. The calculation is the discrete sum of the working samples; no sample-spacing factor or amplitude normalization is applied. A denser grid can therefore produce a larger output sum. This is not an approximation to a continuous convolution integral. Continuous, periodic, Fourier and Legendre–Hardy lessons are planned. The private preprint is not included in the app.