EE544 Matlab Root-Locus Example

M-file:

% Filename:     rootlocus.m
%
% Description:  M-file demonstrating the use of matlab's 
%               rlocus() and rlocfind() functions on the
%               example characteristic equation
%               1 + K(s+2)/(s(s+1)).
%

% clear matlab memory and close all figures
clear all; close all;

% define numerator and denominator of L(s) and print to check
numL = [1 2]; denL = [1 1 0];
disp(['L(s) = ', poly2str(numL,'s'), '/', poly2str(denL, 's')]);
disp(' ');

%***** First Approach to Root Locus - Loop Over K *****

% open figure 1
figure(1);

% find open loop zeros and plot as o's, 
% find open loop poles and plot as x's
olzeros = roots(numL);
olpoles = roots(denL);
plot(real(olzeros),imag(olzeros),'ro'); hold on;
plot(real(olpoles),imag(olpoles),'rx');

% loop over K, find and plot closed-loop poles
for K = 0.1:0.1:10,
    clpoles = roots([1, 1+K, 2*K]);
    plot(real(clpoles),imag(clpoles),'bx');
end
hold off;
xlabel('Real Axis'); ylabel('Imaginary Axis');
title('Root Locus for CLTF K(s+2)/(s^2+(1+K)s+2)');

%***** Second Approach to Root Locus - Use rlocus() and rlocfind() *****

% open figure 2
figure(2);

% define transfer function object for L(s)
sysL = tf(numL, denL);

% plot closed-loop system's root locus
rlocus(sysL);
title('Root Locus for Characteristic Equation 1 + K(s+2)/(s(s+1))');

% loop a user-specified number of times to find poles and corresponding
% gains from root-locus plot
nK = input('Enter number of CL-poles on which you wish to click to find corresponding gain, K:  ');
n  = 0;
while(n < nK)
    [K, poles] = rlocfind(sysL)
    n = n + 1;
end

Matlab Response Generated:

>> rootlocus
L(s) =    s + 2/   s^2 +  s
 
Enter number of CL-poles on which you wish to click to find corresponding gain, K:  3
Select a point in the graphics window

selected_point =
  -0.5829 - 0.0047i
K =
    0.1716
poles =
  -0.5858 + 0.0037i
  -0.5858 - 0.0037i

Select a point in the graphics window
selected_point =
  -2.0047 + 1.4115i
K =
    3.0095
poles =
  -2.0048 + 1.4142i
  -2.0048 - 1.4142i

Select a point in the graphics window
selected_point =
  -3.4076 - 0.0047i
K =
    5.8284
poles =
   -3.4189
   -3.4095

Root-Locus Plots Generated: