Average or Difference?

We made a low-pass by adding neighbouring samples. To make the matching simple high-pass, change just one operation: subtract the previous sample instead.

Low-pass asks: “How similar are these neighbouring samples?”   High-pass asks: “How much has the signal changed since the previous sample?”

1. One tiny change

LOW-PASS — average

y[n] = 0.5x[n] + 0.5x[n−1]

Slowly changing neighbouring samples are similar, so they reinforce.

HIGH-PASS — difference

y[n] = 0.5x[n] − 0.5x[n−1]

Slowly changing neighbouring samples are similar, so subtracting them leaves almost nothing.

STORE + MULTIPLY + ADD / SUBTRACT

2. Watch the same samples go through both

AVERAGE

+
÷2 =

DIFFERENCE

−
÷2 =

3. Two extreme cases make it obvious

DC / no change

+1, +1, +1, +1 …

Low-pass: (+1 + +1) ÷ 2 = +1 → passes it.

High-pass: (+1 − +1) ÷ 2 = 0 → removes it.

Nyquist / fastest alternation

+1, −1, +1, −1 …

Low-pass: (+1 + −1) ÷ 2 = 0 → removes it.

High-pass: (+1 − −1) ÷ 2 = +1 → passes it.

That's the mirror image: averaging rewards similarity; differencing rewards change.

4. Same idea as frequency responses

The moving dots correspond to the frequency above. The low-pass falls as the high-pass rises.

5. Hear one operation change the filter

Sweep the frequency and switch between + and −. The stored sample and coefficients are unchanged — only the relationship between the two paths changes.

6. The high-pass is also a change detector

x[n] − x[n−1] = “WHAT CHANGED SINCE LAST SAMPLE?”

This simple first-difference filter responds strongly to rapid change and weakly to slow change. That is why it naturally behaves like a high-pass.

DSP toolbox: the low-pass and high-pass both use the same STORE and MULTIPLY operations. We changed one + into a −, and the spectral behaviour flipped.