INDEX

Function: DEFIN_VW


Purpose. Computes the right eigenvectors that can be assigned for given desired closed-loop eigenvalues. Several options are offered.

Synopsis.

[v,w,cv] = defin_vw(sys,pol,key,def_pb[,cc,dd[,ee]]);
[v,w,cv] = defin_vw(sys,pol,'p',def_pb,fb0);
[v,w,cv] = defin_vw(sys,pol,'p',def_pb,K,'s');
[v,w,cv] = defin__vw(sys,pol); <- single-input system

Description. The options are:

  • some entries of eigenvectors set to zero <-> 'z'
  • minimum energy assignment <-> 'm'
  • projection of eigenvectors <-> 'p'
  • eigenvector in a null space <-> 'n'
  • least squares with respect to a desired vector <-> 'v'
  • assignment of more than p eigenvalues. <-> 'e'
(p is the number of measurements). With options 'z' and 'n', the problem can be under or over specified. In the first case, a feasible choice is made at random, in the second case, least squares is used.

Input arguments

 sys LTI system (see ss.m).
 pol Vector (of length q) of assigned eigenvalues. Do not repeat conjugate values.
 key Vector (of length q) defining options for assignment: key(i) is one of the strings 'z', 'n', 'v', 'p', 'm', 'e'. If all assignments are made using the same option, key can be one of the 1 by 1 strings listed above (except the last one).
 def_pb Matrix having q columns. Non significant entries should be set to zero. Each column has a different meaning depending on the corresponding option, as detailed below.
 cc,dd,ee These three matrices are useful only if key(i) = 'n' for some i.
 fb0 This feedback gain argument is relevant only if key = 'p'. Projection of eigenvectors of sys controlled by fb0. If the reference feedback is a state feedback K, replace fb0 by K,'s'.
 key(i) =

'z': def_pb(:,i) contains the indices of the entries of the eigenvector corresponding to pol(i) that must be set to zero. Indices larger than the number of states refer to the entries of the input direction vector.

'n': def_pb(:,i): The vectors vi (right eigenvector) and wi (input direction) corresponding to pol(i) will be such that cc(def_pb(:,i),:)*vi + dd(def_pb(:,i),:)*wi = ee(def_pb(:,i),i) Usually ee = 0. Default cc = sys.c, dd = sys.d, ee = 0.

'v': def_pb(:,i) is a n ×1 vector. (n number of states). def_pb(:,i) is the desired (possibly complex) ith eigenvector (it is assigned by least squares minimization).

'p': for projection of open-loop eigenvector. Three cases

1- one open-loop real (resp. nonreal) pole replaced by a closed-loop real (resp. nonreal) one: pol(i) is the assigned (closed-loop) eigenvalue def_pb(1,i) is the concerned open-loop eigenvalue.
2- two open-loop real poles OL_pole_1 and OL_pole_2 replaced by one closed-loop non real pole CL_pole. Then, pol(i) = CL_pole and def_pb(1,i) = OL_pole_1 + j OL_pole_2, def_pb(2,i) = 1.
3- one open-loop non real OL_pole replaced by two closed-loop real CL_pole_1 and CL_pole_2. Then, pol(i) = CL_pole_1 + j CL_pole_2, def_pb(1,i) = OL_pole, def_pb(2,i) = 2.

'm': minimum energy assignment def_pb(:,i) contains the open-loop pole that must me shifted to pol(i) with ``minimum energy''.

'e': the pth eigenvector assigns r other eigenvalues that are specified in def_pb(1:r,i=p), pol(i=p) must be real r < m (m = number of inputs, p = number of outputs).
 key == 'p' Offers the possibility of selecting projection of closed-loop eigenvectors.

Output arguments

 v,w,cv Assignable eigenvectors, input directions and vectors cv: cv represents sys.c * v + sys.d * w.

See also: fb_prop, ff_assgn, ob_gene, eig_cstr, cstr_eig


Examples. Although this function is not directly useful, in the special case of multi-model assignment with proportional gain, using defin_vw is much simpler than using fb_dyn..

Illustration of a multi-objective eigenvector selection.

    pol = [-0.2 -0.3 -0.2+0.3*i -0.5 -1.5];
    key = [ 'z'  'n'    'v'      'p'  'm'];

Now, let us describe the constraint defined by the matrix def_pb. The first column defines the entries of the eigenvector corresponding to -0.2 that must be equal to zero (option 'z'). Here it is the 8th one. The second column defines which rows of ``C'' and ``D'' are concerned for the null space (option 'n') in the computation of the right eigenvector corresponding to -0.3 . Here, it is the second row. The third column is the desired right eigenvector for -0.2+0.3*i (option 'v'). The two other rows define open-loop eigenvalues (option 'p' and 'm').

    def_pb = [];
    def_pb(1,1) = 8;
    def_pb(1,2) = 2;
    def_pb(1:8,3) = [0;0;0;-0.7+0.6*i;0;0;0.02;0.02+0.04*i];
    def_pb(1,4) = -0.18;
    def_pb(1,5) = -1.3;

    [V,W,CV] = defin_vw(sys,pol,key,def_pb);

Discussion. Usually, this function can be ignored by the user, except for the help message which is not repeated in the functions that have the same input arguments. These functions are fb_prop, eig_cstr, cstr_eig, ob_gene and ff_assgn.