Here is simple code to illustrate overshoot using bessel filter:

sig = (np.random.rand(300)-0.5)*2
b, a = signal.bessel(5, np.asarray([10e3, 400e3])/(0.5*1e6), btype='bandpass') 
sig_f = signal.filtfilt(b, a, sig)
plt.plot(sig, label='input')
plt.plot(sig_f, label='filtered')

I need a zero phase bandpass filter. I want to reduce overshoot as much as possible, that's why I'm using Bessel filter. But I still have some overshoot in some cases.

In this example, I would like to understand which parameters of my input signal/filter are closely related to overshoot. In my case, is it related to sharp transition in my signal? How can I prevent overshoot?

enter image description here


If it were a low-pass filter, I would say you need to turn the resonance (or $Q$) down enough that both poles are real.

What's the order of your bessel filter?

But a bandpass filter is necessarily resonant. i might think that a BPF must have poles that are complex. (now that i think about it, a BPF does not necessarily have poles that are complex conjugate.)

if the BPF has gain exceeding 1 (or 0 dB) for its resonant frequency, then then it should be expected that the output will be larger than the input at that resonant frequency. but if the gain is less than 1 for all frequencies, i dunno why it would overshoot at that frequency.

but there are zeros for BPF also. one at DC and another at Nyquist. so maybe you have to turn down the $Q$ to $\frac12$ so that no pole is "ringing".

  • 1
    $\begingroup$ A 1-pole low-pass filter cascaded with a 1-pole high-pass filter will be a non-resonant bandpass filter. $\endgroup$
    – Ben
    Apr 16 '19 at 1:32
  • $\begingroup$ yeah @Ben , i started figuring that out. $Q<\frac12$ is such a filter, but i would still call it "resonant", but maybe that's the wrong word for it. $\endgroup$ Apr 16 '19 at 1:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.