Electrical – Butterworth bandpass – higher roll-off than expected

band passfilter

I am looking into filters, and i am using FilterLab and MATLAB's Filter designer.

I know that i need to make a bandpass filter, with a roll-off of about 48 dB/octave. This is quite high, and i would belive that i need a 16th order filter, to achieve this.

I have now read that a 6th order bandpass filter is enough, which diverges from my knowledge. I thought that a butterworth had a roll-off of 6 dB/octave, per order.

Looking a MATLAB's Filter designer:

enter image description here

This pictures shows a 6th order bandpass, butterworth IIR filter. It also shows a attenuation of ~48 dB, 1 octave above Fc2.

Why does it have such a high attenuation? What have i missed?

——-Edit——

If looking at these two pictures from Filterlab. They are both analog butterworth filters. BP filter is 6th order, and LP is 3rd order. The X axis is logaritmic.

enter image description here
enter image description here

As stated in the answer, the line looks right if measured farther away from Fc on the band pass, and looks just right on the LP filter.

What i do not understand is:

Why does the bandpass filter not have the same slope as the low pass filter at the start?

Is there a way to calculate the bandpass slope at the start?

Best Answer

When the ratio of the bandwidth to center frequency is low, the quality factor goes high and the response no longer has nice, smooth, constant rolloff outside the edges. In your case, I see ~200Hz~300Hz badwidth, with a ~1kHz center frequency, which makes the ratio less than 1. It's also what Andy says, about the log axis, but here, log or lin, the rolloff is initially faster as opposed to further away from the edges. Here's an IIR Butterworth, f0=48kHz, fc=1kHz, and bandwidth stepped according to the following table: 100, 200, 500, 1k, 2k, 5k, 10k [Hz]. Note that the linearity of the rolloff is only reliable further away from the edges the lower the BW/fc ratio (log axis):

log

For comparison, here's the same sweep on linear axis:

lin