3
$\begingroup$

I am working on a school project on converting a 6th order butterworth high pass filter to digital filter using bilinear transformation.

Just got a couple conceptual questions need to be clarified before I continue.

  1. In an analog 6th order butterworth filter, the poles are the same for highpass and lowpass since poles are found in the denominator?

  2. I have found 6 poles, and say my first pole is -0.259+ 0.966i if my cut off frequency is $1 \textrm{ rad/s}$. If my cut off frequency is changed to $10000 \textrm{ rad/sec}$. The radius of the unit circle would be $10000$ and my pole would be -2590 + 9660i?

  3. Is there anyway someone could verify that once applied bilinear transformation without pre-wraping the frequency (professor said do it without pre-wraping first and compare to wrapped after), in the $z$-plane the poles would be:

0.1894 + 0.7499i
0.1894 - 0.7499i
0.1405 + 0.4077i
0.1405 - 0.4077i
0.1222 + 0.1283i
0.1222 - 0.1283i 

I'm quite new on DSP, any help is appreciated.

$\endgroup$
  • $\begingroup$ Could you explain how exactly you arrived at the poles in the $z$-plane? What was the cut-off frequency of the analog prototype, and which exact formula of the bilinear transform did you use? Formulas may differ in the constant factor. $\endgroup$ – Matt L. Mar 8 '16 at 21:26
  • $\begingroup$ I used matlab with bilinear command. the cut off freq for analog was 1591.5Hz (10000 rad/s.) I didnt pre-wrap the frequency so my digital filter's cut off frequency ended up in the 1350ish Hz. $\endgroup$ – DLonenski Mar 9 '16 at 0:42
  • $\begingroup$ [bz6,az6] = bilinear(b6,a6,6366.2); %sampling frequency is 6366Hz [HD6, wd6]=freqz(bz6,az6); [zz6, pz6, kz6]=tf2zpk(bz6, az6); This is my code for the matlab. pz6 is the pole. The sampling frequency is 4 times the cut off. $\endgroup$ – DLonenski Mar 9 '16 at 0:42
4
$\begingroup$

The poles of low pass and high pass Butterworth filters are indeed the same if both filters have the same cut-off frequency. The difference between the two lies in the numerator. A low pass filter has a constant in the numerator, whereas a high pass filter has a constant times $s^N$, where $N$ is the filter order.

The poles of a normalized Butterworth low pass filter (i.e., one with cut-off frequency $\omega_c=1$) lie on a circle with center $s=0$ and radius $1$ in the complex $s$-plane. Of course they are all in the left-half plane:

$$p_k=-e^{j\frac{k\pi}{2N}}\tag{1}\\ k=\pm 1,\pm 3,\ldots,\pm (N-1),\quad N\text{ even}\\ k=0 ,\pm 2,\ldots,\pm (N-1),\quad N\text{ odd}$$

If you have a cut-off frequency $\omega_c\neq 1$, the variable $s$ is transformed as $s\rightarrow \frac{s}{\omega_c}$, so a factor $\frac{1}{s-p_k}$ of the transfer function becomes $\frac{1}{s/\omega_c-p_k}=\frac{1}{\omega_c}\frac{1}{s-\omega_cp_k}$. So the poles are indeed multiplied by the cut-off frequency $\omega_c$, i.e., they lie on a circle with radius $\omega_c$. Their angles of course remain unchanged.

Without pre-warping, the bilinear transformation is usually implemented as

$$s=2f_s\frac{z-1}{z+1}\tag{2}$$

where $f_s$ is the sampling frequency. Expressing $z$ in terms of $s$ gives

$$z=\frac{2f_s+s}{2f_s-s}\tag{3}$$

Equation $(3)$ can be used to determine the pole locations in the complex $z$-plane. If the cut-off frequency of the analog filter is $\omega_c$, its poles are located at $\omega_cp_k$, with $p_k$ given by $(1)$. So the poles in the complex $z$-plane are given by

$$z_{\infty,k}=\frac{2f_s+\omega_cp_k}{2f_s-\omega_cp_k}\tag{4}$$

You can use $(4)$ to check the pole locations you obtained from Matlab (and I don't doubt that they are identical up to numerical inaccuracies).

$\endgroup$
  • $\begingroup$ I just tried to do it in the equaltion (4)...and I didnt get the same answer at all. Do you mind to try? My analog pole is at -2590 + 9660i. The pole in zplane should be on the right hand side of the zplane but I got left hand side. I did (2*6366-10000*(-2590 + 9660i))/ (2*6366+10000*(-2590 + 9660i)) = -1.00-2.46i $\endgroup$ – DLonenski Mar 9 '16 at 22:17
  • $\begingroup$ I did some reading and found out to convert analog pole to pole from bilinear, I have to use z= (1+(T/2)s)/(1-(T/2)s) I think the signs were exchanged from your equation. $\endgroup$ – DLonenski Mar 9 '16 at 22:42
  • $\begingroup$ @DaveL: You're right, there was a typo in Equations (3) and (4), the signs were wrong. Now everything is corrected and you get the correct pole locations. $\endgroup$ – Matt L. Mar 10 '16 at 7:10

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.