I have a discrete implementation of a notch/bandstop filter that allows me to specify the stop band frequency, the width of the notch and the attenuation of the stop band frequency. I've been tasked with working backward to determine a $s$ domain representation. I've assumed that this discrete implementation was arrived at by applying a pre-warped bilinear transform to a second order $s$ domain transfer function of the sort:


where $\omega_0$ is the bandstop frequency in radians and things are playing out to support that assumption. But there's a term (calculated in the discrete implementation) that factors into the coefficients that I don't understand.

$$\frac{\omega_b}{1-1.7/(1/2f_n T_s)^{2.285} }$$

Where $\omega_b$ is the bandwidth at the -3db point in rads, $f_n$ is the bandstop frequency in Hz, $T_s$ is the sampling time in seconds.

Bode diagrams match for the $s$ and $z$ domain transfer functions I came up with but to finish my task, I need to be able to explain this term. I've searched for the basic equation along with 2.285 and have only found references to estimating the order of a FIR filter. I'm hoping someone one recognizes it as an approximation or some other conversion factor.

  • $\begingroup$ Do a web search on "frequency prewarping". If that weird equation turns out to be a good approximation for $\tan^{-1}\left(\pi f_n T_s\right)$ then you'll be equipped to answer your own question. $\endgroup$
    – TimWescott
    Commented Jul 1, 2021 at 23:59

1 Answer 1


Answering my own question, my S domain filter has a better representation: $$H(s)=\frac{s^2+\mu\omega_bs+\omega_o^2}{s^2+\omega_bs+\omega_o^2}$$

mu is the unitless attenuation of the signal at the bandstop frequency. Wb is the bandwidth in r/s at the -3db point Wo is the bandstop frequency in r/s. The comparison between my existing Z domain filter and the bilinear transform with prewarping doesn't look so good. I found reference to 'bandwidth cramping' that can occur on prewarping. I applied this and came up with a transform of $$s\leftarrow\frac{\omega_o}{tan(\frac{\omega_oT_s}{2})}\frac{2(z-1)}{T_s(z+1)}$$ and $$\omega_b\leftarrow\omega_b\frac{\omega_oT_s}{sin(\omega_oT_s)}$$ My match between my derivation of the z transform, my existing filter, and the S domain tracks very well across all the setpoints I looked at. So my conclusion is that the term in my original post is an estimation mixed up with the bilinear transform, prewarping, and the bandwidth cramping compensation term. Why this is so I'll likely never know as I suspect the original designer has passed through life's final filter. enter image description here

  • 1
    $\begingroup$ Thank-you for adding your own answer! Much appreciated. $\endgroup$
    – Peter K.
    Commented Nov 17, 2021 at 16:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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