clear variables
%
%  Program to model RLS for plant identification
%
%  determin the time vector
%
  Tf = 4.0;       % determine the final time
  Ts = 0.005;        % determine the sample interval
  t = [0:Ts:Tf];   % get a time vector
  N = length(t);
%
% enter the forgetting factor
%
  lambda = 0.5;
%
%  determine the input (reference) signal
%
  r = ones(1,length(t));
  uu = ones(1,length(t));
  r =  uu.*((t>=0.25)&(t<0.5))+ 3*uu.*((t>0.75)&(t<1.25)) + 2*uu.*((t>1.5)&(t<3.0))+uu.*(t>3.5);
  r = r+0.01*randn(1,length(t));
%  r = uu;
%  r = randn(1,N);
%  r = sin(2*pi*t);
% 
% prepare the reference signal and the corresponding time for Simulink
%
  rt = [t' r']; 
%
%  determine the size of the plant transfer function and controller 
%
  Nbp = 2;
  Nbc = 3;
%
% set the prefilter to 1 to start with
%
  Gpf = 1.0;
%
%  get the desired closed loop pole locations
%
  D = poly([0.1 0.2+j 0.2-j 0.3]*0.9);
%
%  determine the saturation level
%
  saturation_level = 2.0;
%
%  Now simulate the system
%
%  sim('adaptive_controller_RLS');
  sim('adaptive_controller');
%
%  plot the results
%
  figure;
  subplot(2,1,1); stairs(ts,ys,'Linewidth',2); grid; xlabel('Time'); ylabel('y value');
  subplot(2,1,2); stairs(ts,us(:,1),'Linewidth',2); grid; xlabel('Time'); ylabel('u value');
%
% extract the parameters and plot them when you get to the RLS part
%
%   N = length(ts);
%   for i = 1:N
%       theta1(i) = theta_est(1,1,i);
%       theta2(i) = theta_est(2,1,i);
%       theta3(i) = theta_est(3,1,i);
%   end;
%   figure;
%   subplot(4,1,1); plot(ts,-theta1,'r-'); grid; axis([ 0 max(ts) -2 2]); ylabel('a_1');
%   subplot(4,1,2); plot(ts,theta2,'r-');  grid; axis([ 0 max(ts) -2 2]); ylabel('b_0');
%   subplot(4,1,3); plot(ts,theta3,'r-');  grid; axis([ 0 max(ts) -2 2]); ylabel('b_1');
%   subplot(4,1,4); plot(ts,ys); grid; ylabel('y(n');
