Filter transfer function plots in the complex plane

All filter transfer functions are expressed in terms of the variable s which represents complex frequency. A pictorial reason for poles providing attenuation is given here, where the gain function is plotted in 3D over the two dimensional complex plane. The transfer function shape is simply the gain curve that lies on the imaginary axis. For the purposes of these examples, I cut off the plots along the imaginary axis so that the gain envelopes are very obvious.

Poles

Poles jut up from the plane towards infinity, and around them they raise the planar "sheet" up like a cone. The effect of this raising is felt on the imaginary axis as a bump near where the pole's imaginary part lies. If you are wondering why the gain function would not tend towards infinity as the pole creeps towards the imaginary axis, that is because of the normalizing factor (DC gain, K, etc.) that you multiply in to make it physically sensible. Let's start off with some basic passive filters because they are composed of only poles. These filters all have conjugate poles, so the bump in the gain function is spread out over a large range on the imaginary axis. If only simple poles, or poles on the real axis were used, then the gain profile would be more rounded, and therefore, less interesting to look at.

Third Order Butterworth

The poles are evenly spaced out on the unit circle in the left half plane. The magnitude and argument of the complex function are plotted below.

In[409]:=

px1 = 1 ; px2 = 1/2^(1/2) ; py2 = 1/2^(1/2) ; Plot3D[(px1 (px2^2 + py2^2))/(((x + px1)^2 + y^2 ... 4, 0}, {y, -4, 4}, ViewPoint {2, 0, 1}, PlotRange {-7, 7}, PlotPoints100]

[Graphics:HTMLFiles/index_4.gif]

Out[412]=

⁃SurfaceGraphics⁃

[Graphics:HTMLFiles/index_6.gif]

Out[413]=

⁃SurfaceGraphics⁃

Now, to see the actual gain and phase profiles, we scale the x and y axes logarithmically, like we would in a Bode plot. I have also scaled the vertical axis on the magnitude plot to reflect logarithmic gain.

px1 = 1 ; px2 = 1/2^(1/2) ; py2 = 1/2^(1/2) ; Plot3D[Log[((px1 (px2^2 + py2^2))/(((x + px1)^2  ... xesLabel {"real axis", "Log Frequency", "Phase (degrees)"}]

[Graphics:HTMLFiles/index_9.gif]

Out[438]=

⁃SurfaceGraphics⁃

[Graphics:HTMLFiles/index_11.gif]

Out[439]=

⁃SurfaceGraphics⁃

Notice how the front edge of the surfaces trace out the gain and phase profiles.

Fifth order Butterworth

This filter has 5 poles evenly spaced on the unit circle in the left half plane.

In[373]:=

t1 = π/10 ; t2 = (3π)/10 ; px1 = 1 ; px2 = Sin[t1] ; py2 = Cos[t1] ; px3 = Sin[t2] ; ...  + py3)^2)^(1/2))], {x, -8, 0}, {y, -4, 4}, ViewPoint {3, 0, 1}, PlotPoints100] ;

[Graphics:HTMLFiles/index_14.gif]

Fifth Order Chebyshev

The poles now lie on an ellipse. Their locations are the same as if this was a Butterworth filter with poles on a circle, but now you squeeze the ellipse narrower towards the imaginary axis.

In[388]:=

RowBox[{RowBox[{e, =, 0.5}], ;}] t1 = π/10 ; t2 = (3π)/10 ; px1 = e * 1 ; px2 = e *  ...  + py3)^2)^(1/2))], {x, -8, 0}, {y, -4, 4}, ViewPoint {3, 0, 1}, PlotPoints100] ;

[Graphics:HTMLFiles/index_16.gif]

Fourth Order Chebyshev

More of the same.

In[396]:=

RowBox[{RowBox[{e, =, 0.5}], ;}] t2 = π/8 ; t2 = (3π)/8 ; px1 = e * 1 ; px2 = e * Si ...  + py3)^2)^(1/2))], {x, -8, 0}, {y, -4, 4}, ViewPoint {3, 0, 1}, PlotPoints100] ;

[Graphics:HTMLFiles/index_18.gif]

The actual gain and phase profiles are

RowBox[{RowBox[{e, =, 0.5}], ;}] t2 = π/8 ; t2 = (3π)/8 ; px1 = e * 1 ; px2 = e * Si ... xesLabel {"real axis", "Log Frequency", "Phase (degrees)"}]

[Graphics:HTMLFiles/index_20.gif]

Out[479]=

⁃SurfaceGraphics⁃

[Graphics:HTMLFiles/index_22.gif]

Out[480]=

⁃SurfaceGraphics⁃

Zeros

Here we have the transfer function of a lag compensation block, which has a pole zero pair.

In[685]:=

pxz = 10 ; pyz = 0 ; pxp = 1 ; pyp = 0 ; Plot3D[Log[(pxp/((x + pxp)^2 + (y + pyp)^2)^(1/2) ((x ... Tan[x + pxz, y]), {x, -40, 0}, {y, -20, 20}, ViewPoint {2, -1, 1}, PlotPoints100]

[Graphics:HTMLFiles/index_25.gif]

Out[689]=

⁃SurfaceGraphics⁃

[Graphics:HTMLFiles/index_27.gif]

Out[690]=

⁃SurfaceGraphics⁃

The zero in the plot above is hard to see, but there is a slight indent beyond the pole. The zero "pulls down" the sheet that the pole "pulls up". Since the above plots are not using a vertical log scale, this is hard to see. The net effect of the pole zero pair is that far from the pair, the "sheet" looks approximately flat, so the gain profile levels out. On the phase plot above the vertical flat areas are not flat; they are simply being cut off for being too large to fit in the box. The zero tries to twise the sheet down (when going counterclockwise) and the zero twists the sheet upwards. The actual frequency response is

In[602]:=

pxz = 10 ; pyz = 0 ; pxp = 1 ; pyp = 0 ; Plot3D[Log[(pxp/((x + pxp)^2 + (y + pyp)^2)^(1/2) ((x ... xesLabel {"real axis", "Log Frequency", "Phase (degrees)"}]

[Graphics:HTMLFiles/index_30.gif]

Out[606]=

⁃SurfaceGraphics⁃

[Graphics:HTMLFiles/index_32.gif]

Out[607]=

⁃SurfaceGraphics⁃

Right Half Plane Poles

These are bad for stability. Not sure how one can see that visually here, but I'll just plot them. Now I'm cutting off the plots at the imaginary axis from the other side. What you see is a horizontally flipped imaginary axis, so the poles are still visible.

In[751]:=

pxp = 1 ; pyp = 0 ; Plot3D[Log[(pxp/((x - pxp)^2 + (y - pyp)^2)^(1/2))], {x, 0, 8}, {y, -4, 4} ... xesLabel {"real axis", "Log Frequency", "Phase (degrees)"}]

[Graphics:HTMLFiles/index_35.gif]

Out[753]=

⁃SurfaceGraphics⁃

[Graphics:HTMLFiles/index_37.gif]

Out[754]=

⁃SurfaceGraphics⁃

In[771]:=

pxp = 1 ; pyp = 0 ; Plot3D[Log[(pxp/((x - pxp)^2 + (y)^2)^(1/2))/.{x10^(X/10), yᢃ ... xesLabel {"real axis", "Log Frequency", "Phase (degrees)"}]

[Graphics:HTMLFiles/index_40.gif]

Out[773]=

⁃SurfaceGraphics⁃

[Graphics:HTMLFiles/index_42.gif]

Out[774]=

⁃SurfaceGraphics⁃

There is obviously some odd behavior going on here, which may or may not be a problem with Mathematica.


Created by Mathematica  (October 27, 2005)