Nyquist Example #1

MATLAB Code




%         ***** 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 plot

xlabel('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 markers

re1(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 plot

xlabel('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 markers

re2(i2),im2(i2),'mo',re2(i3),im2(i3),'mo'),hold off

text(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 function

olp3 = [-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 plot

xlabel('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 markers

re3(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 off

text(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 function

olp4 = [-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 plot

xlabel('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 markers

re4(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