I am trying to convert the continuous time transfer function of a second order lowpass Butterworth filter is given by:
To a bandpass fourth order bandpass digital filter, I first apply the mapping to bandpass:
We therefore obtain the bandpass continuous time transfer function
In order to convert this to a digital filter with with band edge frequencies of 2000Hz and 2819.3 Hz, and a sampling rate of 8 kHz. We first normalise and apply bilinear prewarping
approximating slightly we get
Then applying the bilinear transform
We get the fourth order discrete time filter
However
Checking the results at the normalised angular frequencies 0 and at the bandpass center frequency 3, I find that the frequency response is not as desired. is this an arithmetic mistake or have I missed something, your help would be very much appreciated.
1 Answer
There is an error in the analog bandpass filter transfer function. If you apply the LP-BP transformation as you stated it you should get the following transfer function:
$$H(s)=\frac{s^2(\Omega_2-\Omega_1)^2}{s^4+\sqrt{2}(\Omega_2-\Omega_1)s^3+(\Omega_1^2+\Omega_2^2)s^2+\sqrt{2}\Omega_1\Omega_2(\Omega_2-\Omega_1)s+\Omega_1^2\Omega_2^2}$$
With the given band edge frequencies (note that the lower band edge of the discrete-time filter must be $2000\,\text{Hz}$, not $4000\,\text{Hz}$) you correctly got $\Omega_1=2$ and $\Omega_2=4$. Applying the bilinear transform to the analog bandpass transfer function with these band edges finally gives the following discrete-time transfer function:
$$H(z)=\frac{z^4-2z^2+1}{(10+3\sqrt{2})z^4+(12+2\sqrt{2})z^3+20z^2+(12-2\sqrt{2})z+10-3\sqrt{2}}$$
-
$\begingroup$ Ah thanks, it was just an arithmetic mistake, I wasnt sure. $\endgroup$– peterjtkCommented May 11, 2015 at 21:10