enter image description here

Note: I need to do this by hand which is why I'm struggling. I'm only using MATLAB here to show the nyquist plot, and I was also using it to try and check my answer.

Edit: There are poles at -50, -10 and 0. So none on the RHS but 1 on the axis. I know this implies marginally stable, but I need to provide an explanation based on the Nyquist plot and I thought using crossovers and margins would be the best way to achieve this. (Since the pole explanation is easy to obtain just by looking at the trasfer function and doesn't relate to the Nyquist)

Using this Nyquist plot, I need to determine the stability of the system. I know that I can do this by comparing the phase and gain crossover frequencies, and gain and phase margins. The margins are calculated using the frequencies, so I need to find them to carry on.

  • Phase crossover is the frequency when the plot crosses the negative real axis
  • Gain crossover is the frequency when magnitude is 1

I need to be able to do this by referring to the Nyquist plot, but I'm not sure how to do this. MATLAB doesn't provide any frequency data at the crossover points as it only shows certain data when using the data tips, so how could I estimate the frequencies?

  • \$\begingroup\$ right click and select show margins. Also right click and select grid (it may clutter the plot). It will also help to magnify the Y axis to something like ylim([-2 2]). for better visibility. \$\endgroup\$
    – AJN
    Aug 4, 2020 at 12:31
  • \$\begingroup\$ First step before plotting Nyquist of the open loop plant is to count the number of open loop poles on the RHS. Please edit this info into the question. \$\endgroup\$
    – AJN
    Aug 4, 2020 at 12:32
  • \$\begingroup\$ "how could I estimate the frequencies?" No need to estimate. use allmargin command to get exact[sic] values. "MATLAB doesn't provide any frequency data at the crossover points" Use more points to plot nyquist with something like nyquist(system, logspace(-2, 3, 10000000). \$\endgroup\$
    – AJN
    Aug 4, 2020 at 12:33
  • \$\begingroup\$ @sam what happened to your previous question on the transfer function. I began answering but got cut-off by a deletion. \$\endgroup\$
    – Andy aka
    Aug 4, 2020 at 12:35
  • 1
    \$\begingroup\$ @sam probably not good to do given a fairly decent answer already posted and mine half in completion. You can always leave your own answer such as "I screwed up and the answer is simply X or Y". \$\endgroup\$
    – Andy aka
    Aug 4, 2020 at 13:27

1 Answer 1


To use Matlab for checking the answer which was calculated by hand, try one of the below methods,

  1. allmargin(system)
  2. increase number of frequency points in the Nyquist plot by manually supplying a large number of frequency points. e.g. nyquist(system, [0:1e-2:1e3]). and then use the cursor. Newer versions of Matlab will show the frequency as well as other details from which you can manually calculate the margins
  3. Use the option given in the context menu / right click menu to show the margins using the cursor / data label.

Example from Mathworks

Sample image from mathworks

Note: Remember that, to calculate margins, you plot the Nyquist for the open loop system and that too where the final system is transformed into a unity feedback configuration.

Note : To calculate by hand, use the conditions \$|G(s)| = 1\$ and \$\angle G(s) = \pi\$ to solve for the gain cross over and phase cross over frequency(ies) respectively. Here \$G(s)\$ is the open loop transfer function of the unity feedback system. Information needed for this is not given in the question.


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.