# How are pole-zero plots, magnitude response plots, and phase response plots related?

Given that the Laplace transform of a continuous-time signal $$h(t)$$ is $$H(s)$$, what can a plot of the poles and zeros of $$H(s)$$ on the $$s$$-plane tell me about the magnitude response and phase response of $$h(t)$$?

• Nice notes! Thank-you for the contribution. Just wondering... why? :-)
– Peter K.
Commented Nov 20, 2021 at 14:00
• @PeterK. For so long, I struggled to understand how pole-zero plots and frequency responses are related. I've checked different books, including Proakis, but didn't get an intuitive answer. Once I saw Richard Lyons' 3D diagrams in Understanding Digital Signal Processing, everything clicked. It is now very easy to differentiate between a lowpass filter and a highpass filter just by looking at the pole-zero plot. Just thought this intuition should be more public. Commented Nov 20, 2021 at 14:02
• @PeterK. there are also other intuitions: what a Laplace transform does and why magnitude and phase plots are needed in the first place. This originated from the need to visualize complex-input, complex-output functions, which is what the Laplace transform of a time-domain function is. Commented Nov 20, 2021 at 14:05
• Cool! Thanks for the explanation.
– Peter K.
Commented Nov 20, 2021 at 18:43

As an additional simple explanation, consider that the transfer function given by a ratio of polynomials, when factored into poles and zeros the transfer function is product of phasors in the numerator divided by phasors in the denominator. For simpler transfer functions this can provide an immediate and intuitive visualization of what the transfer function is in terms of magnitude and phase based on pole and zero locations!

First, consider the difference of two arbitrary complex points on a complex plane, given as $$v = p_2 - p_1$$ and as shown in the graphic below; describes a phasor where the origin has been relocated to $$p_1$$. The magnitude of the phasor is the Cartesian distance between the two complex points, and the angle is as depicted in the diagram, with reference to 0° being in the positive real axis direction.

A transfer function when factored into poles and zeros is such a difference of points on the complex plane, and we limit $$s$$ to be all the points on the $$j\omega$$ axis when we compute the frequency response:

$$H(s) = \frac{(s-z_1)(s-z_2)(s-z_3)\ldots}{(s-p_1)(s-p_2)(s-p_3)\ldots}$$

Consider this example of a single pole filter, which results in a single phasor in the denominator. If we start at DC, the phasor in the denominator given as $$s-p_1$$ would be $$-p_1$$. With $$p_1$$ negative and real as shown then this denominator would have magnitude $$p_1$$ and angle $$0$$. As we sweep $$s$$ along the $$j\omega$$ axis in the positive direction, this phasor will both grow and approach $$90°$$. Since it is in the denominator, the transfer function as we increase frequency will reduce in magnitude and approach $$-90°$$. Further we now se clearly how the magnitude will asymptotically reduce 6 dB/octave, as the frequency increases, every time we double the frequency, we approximately double the length of the phasor in the denominator.

Resulting in the magnitude and phase response for a single pole filter. Thus we also now see how each pole contributes $$-90°$$ to the phase response and -6 dB/octave roll-off to the magnitude response (as $$f\rightarrow\infty$$) and each zero contributes$$-90$$ to the phase response and +6 dB/octave to the magnitude response.

• (+1) very insightful. If I understood your answer correctly, we could start with $H(\omega) = 1$, where the current log-magnitude is $0$ and phase is $0$. Then, we could multiply by the zero $(j \omega - (a + bj))$ with log-magnitude $$\frac{1}{2} \log \left(a^2 + (\omega - b)^2\right)$$ and phase $$\arctan\left(\frac{b - \omega}{a}\right)$$ If we let $$X = \log \left(a^2 + (\omega - b)^2\right)$$ and let $Y$ be the log-magnitude, then it is clear that $Y$ is a linearly increasing function in $X$... Commented Nov 22, 2021 at 10:13
• ...Also, since the $\arctan$ function is monotonically increasing, then the phase is decreasing (not linearly) with $\omega$. Similarly, we could multiply by the pole $\frac{1}{(j\omega - (c + dj))}$ with log-magnitude $$-\frac{1}{2} \log \left(c^2 + (\omega - d)^2\right)$$ and phase $$\arctan\left(\frac{\omega - d}{c}\right)$$ Compared to multiplying by the zero, multiplying by a pole leads to a linearly decreasing log-magnitude and an increasing phase. I guess we could keep multiplying by poles and zeros until we build up the desired transfer function, and since... Commented Nov 22, 2021 at 10:19
• ...logarithms turn multiplication and division into addition and subtraction respectively, then I think the magnitude response would consist of different linear regions. Is all of this reasoning correct? Commented Nov 22, 2021 at 10:21
• Yes that is also good insight. What I was showing here was a simple graphical explanation using the complex values of $H(\omega)$. $H(\omega)=1$ is a phasor that has a magnitude of $1$ and an angle of $0$ radians, compared to $H(\omega) = j$ is a phasor that has a magnitude of $1$ and an angle of $\pi/2$ radians. Commented Nov 22, 2021 at 12:31

To answer this question, it is important to understand

• what a Laplace transform is intuitively doing,
• how the Laplace transform is related to complex-input, complex-output functions,
• how complex-input, complex-output functions can be plotted,
• what a pole and zero visually are, and
• what the "magnitude response" and "phase response" of $$h(t)$$ means.

Note: all code used to generate plots in this answer can be found here.

# The Laplace Transform

Functions are the backbone of DSP theory, and in this context, it is no different. The function $$h(t)$$, for example, takes in a real number $$t$$, which could represent time, and can be assumed to output another real number $$h(t)$$, which could represent voltage, current, etc. Similarly, we could define another function $$f(x)$$ that takes in a complex number $$x$$ and outputs another complex number $$f(x)$$. We could also define a different function $$g(x)$$ that takes in a complex number $$x$$ and outputs a real number $$g(x)$$. Given that $$\mathbb{R}$$ is the set of real numbers and $$\mathbb{C}$$ is the set of complex numbers, then as a shortcut, we use the notation $$h:\mathbb{R} \rightarrow \mathbb{R} \\ f:\mathbb{C} \rightarrow \mathbb{C} \\ g:\mathbb{C} \rightarrow \mathbb{R} \\$$ These kinds of functions are simple to understand: they take in a number (real or complex), and output another number (real or complex). However, what if we could define a function that takes in a function and outputs another function? If $$h$$ is a function that takes in a real number and outputs another real number, and if $$f$$ is a function that takes in a complex number and outputs another complex number, then we could visually represent this new "function" that takes in functions like $$h$$ and outputs another function like $$f$$ as

More precisely, if $$h:\mathbb{R} \rightarrow \mathbb{R}$$ is the input function and $$f:\mathbb{C} \rightarrow \mathbb{C}$$ is the output function, then we could define an operator $$\mathcal{L}$$ that takes in a function $$h$$ and outputs another function $$f$$ as $$\mathcal{L}:h \rightarrow f$$. We could then update the visual representation above to

This is exactly what the Laplace transform does. It takes in a real-input, real-output function $$h$$ and outputs a complex-input, complex-output function $$f$$. More specifically, if the Laplace transform of a continuous-time function $$h(t)$$ is defined as $$H(s) = \int_{-\infty}^\infty h(t) \ e^{-st} \ \text{d}t$$ we could condense this definition to $$\mathcal{L}\{h(t)\} = H(s)$$ Note that the complex-input, complex-output function $$f(x)$$ has been replaced by the complex-input, complex-output function $$H(s)$$. This is just a change of notation and is not important, since both $$x$$ and $$s$$ are assumed to be complex numbers.

# Can we plot complex-input, complex-output functions?

We can easily plot the real-input, real-output function $$h(t)$$, since it only consists of two changing numbers: the input and the output. For example, $$h(t)$$ could look like this:

Here, we plotted the input on the x-axis and the output on the y-axis.

Suppose we compute the Laplace transform of $$h(t)$$ to obtain $$H(s)$$. If $$H(s)$$ is a complex-input, complex-output function, can we plot it like we did with the example $$h(t)$$ given above? The problem with trying to do so is that to represent the input to $$H(s)$$, we need two numbers: the real part of $$s$$ and the imaginary part of $$s$$. Similarly, to represent the complex output of $$H(s)$$, we need two numbers: the real part of $$H(s)$$ and the imaginary part of $$H(s)$$. That is 4 numbers in total: 2 for the input and 2 for the output, which would mean that we would need a 4-dimensional plot to represent $$H(s)$$!

Clearly, a better approach is needed. Recall that a complex number $$a + bi$$ can also be represented in polar form as $$a + bi = Ce^{i\theta}$$ where \begin{align} C &= \sqrt{a^2 + b^2} \\ \theta &= \text{atan2}\left(b,a\right) \end{align} where $$\text{atan2}$$ is the atan2 function. Therefore, a good way to visually represent $$H(s)$$ is to

1. Represent the input to $$H(s)$$, which is $$s$$, as a complex number in rectangular form ($$a+bi$$),
2. Represent the output of $$H(s)$$ as a complex number in polar form, and then
3. Create two 3D plots: one for the magnitude $$C$$ of the output and another for the angle (phase) $$\theta$$ of the output. More precisely, the first 3D plot consists of $$C$$ on the z-axis and $$a$$ and $$b$$ on the x and y axes respectively, while the second 3D plot consists of $$\theta$$ on the z-axis and $$a$$ and $$b$$ on the x and y axes respectively.

To better understand this, consider the simple complex-input, complex-output function $$H(s) = s^2$$ The first step in the process above is to represent $$s$$ as the complex number $$a + bi$$. For the sake of clarity later on, instead of letting $$s = a+bi$$, let $$s = c + di$$, such that \begin{align} H(s) &= (c+di)^2 \\ &= (c+di)(c+di) \\ &= c^2 - d^2 + 2cdi \end{align} Next, step 2 in the process above is to represent the output of $$H(s)$$ in polar form. Note that \begin{align} H(s) &= \underbrace{c^2 - d^2}_a + \underbrace{2cd}_{b}i \\ &= a + bi \end{align} Therefore, in polar form, the output of $$H(s)$$ is \begin{align} C &= \sqrt{a^2 + b^2} \\ &= \sqrt{(c^2 - d^2)^2 + (2cd)^2} \\ \theta &= \text{atan2}\left(b,a\right) \\ &= \text{atan2}\left(2cd,(c^2 - d^2)\right) \end{align} Finally, the last step is to create two 3D plots, one for $$C$$ and another for $$\theta$$. These plots are shown below

Note that the discontinuities in the plot for $$\theta$$ is due to the atan2 function.

# What is a pole anyway?

Here is where it gets interesting. Suppose we plot the magnitude ($$C$$) and phase ($$\theta$$) of the complex-input, complex-output function $$H(s) = \frac{(s - 0.5)}{(s - 1.5)(s + 2)}$$

In the magnitude plot for $$H(s)$$, it is clear that $$|H(s)|$$ shoots up to infinity near $$s = 1.5$$ and $$s = -2$$. Notice that if you take a really long and thin flag pole and plant it at $$s = 1.5$$, the surface of $$|H(s)|$$ will never touch it. This is why the point $$s = 1.5$$ is called a pole. It is not clear from the plot, but $$|H(s)|$$ does go to zero at $$s = 0.5$$. We therefore say there is a zero at $$s = 0.5$$. The corresponding pole-zero plot is

# How does all of this relate to responses?

If $$h(t)$$ represents the impulse response of a continuous-time filter, then we say that the frequency response of $$h(t)$$ is represented by $$H(s)$$ evaluated at $$s = j\omega$$, which is just the imaginary axis on the $$s$$-plane. Recall that the Laplace transform of $$h(t)$$ is formally defined as $$H(s) = \int_{-\infty}^\infty h(t) \ e^{-st} \ \text{d}t$$ Let us substitute $$s = j\omega$$ into this expression to obtain $$H(\omega) = \int_{-\infty}^\infty h(t) \ e^{-j\omega t} \ \text{d}t$$ which is just the continuous-time Fourier transform of $$h(t)$$! In other words, the Fourier transform "lives inside" the Laplace transform. More specifically, on the $$s$$-plane, it lives on the imaginary axis. Therefore, the frequency response of $$h(t)$$ is represented by $$H(\omega)$$. $$H(\omega)$$ is still a complex-input, complex-output function, and so we can decompose its output into magnitude and phase components. If we represent the complex output of $$H(\omega)$$ as $$H(\omega) = a + bi$$ then the magnitude response of $$h(t)$$ is $$\lvert H(\omega) \rvert = \sqrt{a^2 + b^2}$$ and its phase response is $$\angle H(\omega) = \text{atan2}\left(b,a\right)$$ Together, the magnitude response and the phase response of $$h(t)$$ make up its frequency response. Therefore, given a plot of the magnitude and phase of the Laplace transform of $$h(t)$$, to obtain its frequency response, we slice both the magnitude and phase plots along the imaginary axis. For example, suppose that the Laplace transform of $$h(t)$$ is $$H(s) = \frac{(s - 0.5)}{(s - 1.5)(s + 2)}$$ which is the complex-input, complex-output function used above as an example. Then, we can slice the magnitude and phase plots of $$H(s)$$ (which are shown above) along the imaginary axis to obtain the magnitude and phase plots of $$H(\omega)$$, which are represented by the purple outlines in the plots below

We can even zoom into the purple outlines above and then plot 2D versions of the magnitude and phase responses using the scipy package and we can see that they are exactly the same:

# Poles pull up, zeros pull down

Recall that the poles of $$H(s)$$ above are $$s = 1.5$$ and $$s = -2$$. Based on the plots above, we would expect that as these poles got closer to the imaginary axis, the magnitude response would be "pulled up" at $$\omega = 0$$. For example, suppose we move the poles of $$H(s)$$ to $$s = 0.1$$ and $$s = -0.5$$ such that $$H(s) = \frac{(s - 0.5)}{(s - 0.1)(s + 0.5)}$$ The corresponding magnitude and phase responses are

Notice how the magnitude response is very high at $$\omega = 0$$ (some transparency was added to the surface plots to make the outlines clearer). This is in fact an example of a very selective bandpass/lowpass filter. We can design other filters using this method by noting that zeros "pull" magnitude responses down. For example, here is a highpass filter: $$H(s) = \frac{s(s + 0.5j)(s - 0.5j)}{(s - (-0.5 + 1.5j))(s - (-0.5 - 1.5j))}$$

It is clear from this discussion that the 3D magnitude and phase plots of $$H(s)$$ can be used to determine what the 2D magnitude and phase responses of $$h(t)$$ are. Also, since the Z-transform is just a special case of the Laplace transform, then a similar interpretation can be obtained for discrete-time signals. Section 6.2 of Richard Lyons' Understanding Digital Signal Processing extends this explanation in more detail. Finally, MATLAB's Filter Designer tool allows you to interactively move poles and zeros and observe the corresponding magnitude and phase responses, which I found to be extremely helpful.
• This is not wrong but feels needlessly complicated at times. Example: to calculate the TF of $s^2$ you can first convert to polar and then square. You will simply see that $|H(s)|$ = c^2+d^2$and$\angle H(s) = 2atan2(b,a)$. It's mathematically equivalent, but much simpler. It would also help to plot the amplitude on a log scale (e.g. dB) so you can much better see the symmetry between poles and zeros. That also "prettier" in terms of the math: If you take the log of a complex number, the real part is the log magnitude and the imaginary part is the phase. Commented Nov 20, 2021 at 14:49 • @Hilmar thanks for the feedback. Didn't know about taking the log of a complex number, very helpful. What do you mean by "TF" in "TF of$s^2$"? Will update the plots soon. Commented Nov 20, 2021 at 15:07 • Transfer Function. If$H(s) = s^2$and$s = c + id$, then$|H(s)| = c^2+d^2$and$\angle H(s) = 2 \cdot atan2(c,d)\$ Commented Nov 20, 2021 at 15:57