% ***** MATLAB Code Starts Here %
%NYQUIST_01_MAT
%
fig_size = [232 84 774 624];
w = logspace(-2,3,501);
% frequency vector%
num1 = 1; den1 = [1 1];
% 1st transfer function[re1,im1] = nyquist(num1,den1,w);
% Nyquist data%
i1 = find(w==0.1);
i2 = find(w==1);
i3 = find(w==10);
%
figure(1),clf,plot(re1,im1,
'b',re1,-im1,'r--'),grid % Nyquist plotxlabel(
'Real Axis'),ylabel('Imag Axis'),title('Nyquist Plot for G_1(s) = 1/(s+1)'),...axis(
'square'),axis([-0.5 1.5 -1 1]),set(gcf,'Position',fig_size)%
hold on,plot(re1(i1),im1(i1),
'mo',... % add frequency markersre1(i2),im1(i2),
'mo',re1(i3),im1(i3),'mo',... % and vector[0 re1(i2)],[0 im1(i2)],
'k'),hold off,...text(1.02,-0.1,
'w=0.1'),text(0.4,-0.55,'w=1'),text(-0.15,-0.1,'w=10')%
% Show effect of gain on Nyquist plot
%
figure(2),clf,plot(re1,im1,2*re1,2*im1,4*re1,4*im1,
...-re1,-im1,-2*re1,-2*im1,-4*re1,-4*im1),grid,
...xlabel(
'Real Axis'),ylabel('Imag Axis'),title('Nyquist Plot for G(s) = K/(s+1)'),...axis(
'square'),axis([-5 5 -5 5]),set(gcf,'Position',fig_size)%
text(0.5,-0.35,
'1'),text(1.1,-0.85,'2'),text(2.1,-1.85,'4'),...text(-0.6,0.4,
'-1'),text(-1.25,0.8,'-2'),text(-2.25,1.8,'-4')%
num2 = 1; den2 = [1 2 3 1];
% 2nd transfer function[re2,im2] = nyquist(num2,den2,w);
% Nyquist data%
figure(3),clf,plot(re2,im2,
'b',re2,-im2,'r--'),grid % Nyquist plotxlabel(
'Real Axis'),ylabel('Imag Axis'),title('Nyquist Plot for G_2(s) = 1/(s^3 + 2s^2 + 3s + 1)'),...axis(
'square'),axis([-0.5 1.5 -1 1]),set(gcf,'Position',fig_size)%
hold on,plot(re2(i1),im2(i1),
'mo',... % add frequency markersre2(i2),im2(i2),
'mo',re2(i3),im2(i3),'mo'),hold offtext(0.95,-0.33,
'w=0.1'),text(-0.15,-0.37,'w=1'),text(0.03,0.03,'w=10')%
olz3 = [-1;-1;-1];
% 3rd transfer functionolp3 = [-0.2;-5;-5;-5];
K3 = 2 * abs(prod(olp3) / prod(olz3));
num3 = K3 * real(poly(olz3)); den3 = real(poly(olp3));
%
[re3,im3] = nyquist(num3,den3,w);
%
i4 = find(w==100);
% locating frequencies[i0,i5] = max(atan2(im3,re3));
%
figure(4),clf,plot(re3,im3,
'b'),grid % Nyquist plotxlabel(
'Real Axis'),ylabel('Imag Axis'),...title(
'Nyquist Plot for G_3(s) = 50(s+1)^3/[(s+0.2)(s+5)^3]'),...axis(
'square'),axis([-1 5 -3 3]),set(gcf,'Position',fig_size)%
hold on,plot(re3(i1),im3(i1),
'mo',re3(i2),im3(i2),'mo',... % add frequency markersre3(i3),im3(i3),
'mo',re3(i4),im3(i4),'mo',re3(i5),im3(i5),'mo',... % and vectors[0 re3(i1)],[0 im3(i1)],
'k',[0 re3(i2)],[0 im3(i2)],'k',...[0 re3(i5)],[0 im3(i5)],
'k'),hold offtext(1.8,-0.5,
'w=0.1'),text(1.05,0.45,'w=1'),text(1.5,1.2,'w=2.089'),...text(3.25,-1.7,
'w=10'),text(0.15,-0.5,'w=100')%
olz4 = [-0.6;-4];
% 4rd transfer functionolp4 = [-0.1;-20;-130;-1000];
K4 = 2 * abs(prod(olp4) / prod(olz4));
num4 = K4 * real(poly(olz4)); den4 = real(poly(olp4));
%
w1 = logspace(-3,5,401);
[re4,im4] = nyquist(num4,den4,w1);
%
figure(5),clf,plot(re4,im4,
'b'),grid % Nyquist plotxlabel(
'Real Axis'),ylabel('Imag Axis'),title('Nyquist Plot for G_4(s)'),...axis(
'square'),axis([-.5 2.5 -1.5 1.5]),set(gcf,'Position',fig_size)%
hold on,plot(re4(i1),im4(i1),
'mo',... % add frequency markersre4(i2),im4(i2),
'mo',re4(i3),im4(i3),'mo',...re4(i4),im4(i4),
'mo'),hold off%
text(1.15,-0.9,
'w=0.1'),text(re4(i2),0.38,'w=1'),text(-0.35,im4(i3),'w=10'),text(-0.1,0.1,'w=100')% % ***** MATLAB Code Stops Here
Click the
icon to return to the Dr. Beale's home page