Butterworth low-pass filters

September 4th, 2008 at 0:14 · Filed Under At Work, Call Me a Geek, Days in My Life, Mathematics, Software Development · Comment 

I was reading about Butterworth low-pass filters since two weeks ago. Signal processing was not my favorite but this particular linear analog electronic filter had somehow captured my attention. I have interns working on some projects. One project uses Butterworth low-pass filters to process signal acquired from some sensors.

I have to verify their works using Mathematica on Mac OS X for data modeling. But there is a problem with this software. It does not have a built-in function of Butterworth low-pass filter so I need to build one.

The gain G(ω) of an n-order Butterworth low pass filter is given in terms of transfer function H(s) as:

where ωc is break frequency.

The Mathematica code with break frequency normalized at 1 rad/s:


butterworth[w1_, w2_, o_] = 1/(1 + (w1/w2)^(2*o));

LogLinearPlot[
 Evaluate[Table[
   10*Log[10, butterworth[w1, 1, order]], {order, 5}]], {w1, 0.01, 100},
  PlotRange -> {-100, 0}, PlotPoints -> 100, ImageSize -> 400]
Export["butterworth.jpg", %]
Plot of the gain of Butterworth low-pass filters of the n-order 1 through 5.

Plot of the gain of Butterworth low-pass filters of the n-order 1 through 5.