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.
|