Demonstrate eigenvector assignment using an STOVL Model for transition.

The example is taken from:

Lee, H. P., Jr., Yousseff, H.M. and R.P. Habek, "Application of Eigenstructure Assignment to the Design of STOVL Flight Control Systems," AIAA 88-4140-CP.

------------------------------------------------------------------------
See also STOVL, EVAssgnC, IC
------------------------------------------------------------------------

Contents

%---------------------------------------------------------------------------
%   Copyright (c) 2003 Princeton Satellite Systems, Inc.
%   All rights reserved.
%---------------------------------------------------------------------------

System

%-------
g = STOVL('longitudinal transition');

disp(' ')
disp('---------------------')
disp('Open loop eigenvalues')
disp('---------------------')

eig(g)
 
---------------------
Open loop eigenvalues
---------------------
ans =
      -2.5144 +          0i
       1.8883 +          0i
    -0.024921 +     0.1597i
    -0.024921 -     0.1597i
          -50 +          0i
          -50 +          0i
           -4 +          0i

Desired eigenvalues

%--------------------
j      = sqrt(-1);
lambda = [  -1.25 + j;...
            -1.25 - j;...
            -7.5;...
            -1.4];

Desired eigenvectors

%---------------------
vD = [ 1+j  1-j   0 0;...
      -1-j -1+j   0 0;...
        0    0   1 1;...
        0    0   0 0];

% Each row relates vD to the plant matrix
% For example vD(1,1) applies to state 1
% based on row 1 of d. VD(2,1) applies to
% state 2 based on row 2 of d.
%----------------------------------------
d  = [1 0 0 0 0 0 0;... % vD(1,1)
      0 1 0 0 0 0 0;... % vD(2,1)
      0 0 1 0 0 0 0;... % vD(3,1)
      0 0 0 1 0 0 0;... % vD(3,1)

      1 0 0 0 0 0 0;... % vD(1,2)
      0 1 0 0 0 0 0;... % vD(2,2)
      0 0 1 0 0 0 0;... % vD(3,2)
      0 0 0 1 0 0 0;... % vD(3,2)

	  1 0 0 0 0 0 0;... % vD(1,3)
      0 1 0 0 0 0 0;... % vD(2,3)
      0 0 0 1 0 0 0;... % vD(3,3)

	  1 0 0 0 0 0 0;... % vD(1,4)
      0 1 0 0 0 0 0;... % vD(2,4)
      0 0 1 0 0 0 0];   % vD(3,4)

% Rows in d per eigenvalue
% Each column is for one eigenvalue
% i.e. column one means that the first three rows of
% d relate to eigenvalue 1
%---------------------------------------------------
rD = [4,4,3,3];

Compute the gain and the achieved eigenvectors

%-----------------------------------------------
disp(' ')
disp('----')
disp('Gain')
disp('----')
[k, v] = EVAssgnC( g, lambda, vD, d, rD );
disp(k);
 
----
Gain
----
Warning: Matrix is close to singular or badly scaled. Results may be inaccurate.
RCOND =  1.313862e-18. 
       1.0531       5.0562     0.028705      0.14225
       -12.72        60.78     -0.11421       45.489
        1.909       3.2217       0.1626      0.23258

Create the closed loop system

%------------------------------
[a, b, c] = getabcd( g );
aCL       = a - b*k*c;

disp(' ')
disp('-----------------------')
disp('Closed loop eigenvalues')
disp('-----------------------')
eig(aCL)
 
-----------------------
Closed loop eigenvalues
-----------------------
ans =
      -49.444 +          0i
      -41.523 +          0i
         -7.5 +          0i
        -1.25 +          1i
        -1.25 -          1i
      -2.3094 +          0i
         -1.4 +          0i

Digitize the closed loop system using a zero order hold

%--------------------------------------------------------

% Simulate
%---------
x = [0;0;0;0;0;pi/180;0];
IC( g, x, 0.01, 1000 );
g = set( g, aCL, 'a' );

x = [0;0;0;0;0;pi/180;0];
IC( g, x, 0.01, 1000 );


%--------------------------------------