Waste less time on Facebook — follow Brilliant.

Generating Smooth Curves Using Simple Digital Filters

Suppose we have a function of a variable \(t\), \(x(t)\), which consists of multiple connected line segments.

What if we wanted to make a version of this curve with the jagged edges smoothed out? This is fairly easy to do using a digital filter. Define the smoothed function, \(y\), in the following way.

\[\large{y_k = \alpha y_{k-1} + (1-\alpha) x_k}\]

If we discretize \(t\), the \(k\) subscript denotes the present iteration, and the \(k-1\) subscript denotes the previous iteration. The equation above is known as an "infinite impulse response" (IIR) filter, because the present filter output is a function of the previous output, and so on, and so on.....The filter will take infinitely many iterations to fully catch up to any step change in the input.

The present value of \(y\) ( the smoothed version of \(x\)), is equal to a weighted sum of the previous value of \(y\) and the present value of \(x\). Thus, by tweaking the value of the "inertia constant" \(\alpha\), we can dictate how fast the value of \(y\) can change, and thus, how much smoothing we get.

As an extreme case, suppose \(\alpha = 1\). This would mean that \(y\) would be frozen at a static value forever (infinite inertia). For \(\alpha = 0\), the smoothed and un-smoothed curves are exactly equal, corresponding to zero inertia.

Some graphs for intermediate values of \(\alpha\) are shown below. The third one is particularly reminiscent of the Fourier series. We could create a saw-tooth wave by summing up sine waves with various frequencies (from low to high). By increasing the inertia, we essentially implement a low-pass filter which removes the higher harmonics from the saw-tooth, revealing lower-frequency sinusoids.

\(\alpha = 0.97\)

\(\alpha = 0.99\)

\(\alpha = 0.998\)

Note by Steven Chase
3 months, 3 weeks ago

No vote yet
1 vote


There are no comments in this discussion.


Problem Loading...

Note Loading...

Set Loading...