How to let Matlab show large trends in Nyquist Plot?

34 views (last 30 days)
Matlab works in most cases when plotting Nyquist plots, but when there is a astronomically high value, matlab fails to recognize the global trend of the Nyquist plot, and gives a result that's not useful.
Here is an exmple I found.
clc
clear
s = tf('s');
% change Numerator
N = 1;
% change Denominator
D = s^4*(s+2);
H = N/D
nyquist(H)
grid off
This will yield:
What I expect is something like this.
The plot given by Matlab is not useful for analysis, because the large loops in the second picture has a dramatic impact on the stability analysis of the system.
Another example:
clc
clear
s = tf('s');
%---------------------%
% change Numerator
N = (s+1);
% change Denominator
D = s^2*(s+2);
%---------------------%
H = N/D
nyquist(H)
grid off
Matlab gave this
I'm expecting something like this
Again, the matlab output is not useful.
I'm wondering if Matlab has a way to present something like this intelligently.

Answers (1)

Christopher McCausland
Christopher McCausland on 20 Jul 2021
Hi Zizhuo,
You are correct, considering a system L(s); where L(s) has two poles at the origin, will give a 360 degree colocwise path with an infinite radius in the L(s) domain. MATLAB will nativly only show the interior of this and neglect the 360 degree loop. This makes sense as drawing an infinitly big loop is a difficult task for a computer. Also the creation of such a 360 degree loop would indicate that the system is inherently unstable and therefore not of much use (unless as proof for a thesis or similar I guess).
There are some developed MATLAB packages on file exchange which may be able to help you such as this one.
Let me know if that helps,
Christopher

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!