INDEX

Function: CSTR_QUD


Purpose. Defines linear constraints for pole shifting into a quadrilateral.

Synopsis.

CSTR = cstr_qud(CSTR,sys,Quad,lambda,speed,K0[,target])

Description. The quadrilateral is defined by Quad. Only the closed-loop poles the closest to the entries of the vector lambda (if they are outside the quadrilateral) are considered for defining pole shifting constraints. Three constraints are defined (as illustrated below) for each pole to be shifted into the quadrilateral.

This function belongs to the tuning sub-toolbox.

Input arguments

 CSTR Matrix of existing constraints when cstr_qud is called.
 sys LTI system (see ss.m).
 Quad Defines a quadrilateral into which the closed-loop poles the closest to the entries of lambda must be shifted. Quad is a 2 by 2 complex matrix defining the corners of the quadrilateral (which must be inside the upper half complex plane including the real axis). In the above figure Quad = [Q11 Q12;Q21 Q22].
 lambda Vector of the eigenvalues (with positive imaginary part) that must be shifted into the quadrilateral. If all eigenvalues are to be shifted set lambda = eig_fb(sys,K0). See also sort_ev.
 speed Is a scalar number s.t. 0 < speed < = 0.1: speed must be large enough to obtain fast convergence and small enough to avoid non-convergence.
 K0 Initial proportional gain.
 target Complex number: pole target inside the quadrilateral (point T in the above figure).

Output argument

 CSTR Used for communications between RMCT functions.

See also: fb_tun, sort_ev, dist_qud


Example: All the eigenvalues are shifted into the trapezium with upper left and right corners -10+10i and -1+j and lower left and right corners -10 and -1. Use ``trials and errors'' for the choice of the sixth input argument (speed). First, is defined the system and criterion:
  randn('seed',0); rand('seed',0);
  sys = rss(10,3,3);
  K0 = zeros(3,3);
  Quad = [-10+10*i -1+1*j;-10 -1];
  CRIT = crit_k(ones(3,3),zeros(3,3));
The tuning loop is:
   for ii = 1:60;
      lam = eig_fb(sys,K0);
      CSTR = cstr_qud([],sys,Quad,lam,0.01,K0);
      k = fb_tun(CSTR,CRIT);
      K0 = K0 + k;
  end;
and the results are ([eig_fb(sys) eig_fb(sys,K0)]):
  -1.8717 + 4.2640i  -4.3049
  -1.8717 - 4.2640i  -2.4739 + 2.9886i
  -3.2058 + 3.2339i  -2.4739 - 2.9886i
  -3.2058 - 3.2339i  -2.4571 + 2.4050i
  -3.4763            -2.4571 - 2.4050i
  -2.3909            -2.3384 + 0.9544i
  -1.3022            -2.3384 - 0.9544i
  -0.2355            -1.0303 + 0.1174i
  -0.5278            -1.0303 - 0.1174i
  -0.4960            -0.9222
All the eigenvalues have almost reached the trapezium.