A few conceptual questions about filter, pole, and bilinear

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.

• 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. Mar 8, 2016 at 21:26
• 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.
– DL72
Mar 9, 2016 at 0:42
• [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.
– DL72
Mar 9, 2016 at 0:42

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).

• 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
– DL72
Mar 9, 2016 at 22:17
• 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.
– DL72
Mar 9, 2016 at 22:42
• @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. Mar 10, 2016 at 7:10