Function: FF_ASSGNPurpose. Multivariable pole / zero cancellation with ``assignment'' of the right eigenvectors corresponding to the new poles. Synopsis.
dff=ff_assgn(sys,k,pol_old,zer,pol,key,def_pb[,cc,dd[,ee]]); Description. This function computes a feedforward gain which cancels some poles (of sys controlled by k) by assigning zeros at the same location. The cancelled poles (pol_old) are replaced by new ones (pol) that are chosen by the designer. If the zeros (zer) coincide exactly with pol_old, the cancellation is exact otherwise it is made approximately. Note that:
Input arguments.
Output argument.
See also: fb_prop, defin_vw, ff_stat Example. It is expected to replace the poles the closest to -0.1 + 1j and to -2 by poles at -1 + 1j and -5 (pol_o = [-0.1+1*j;-2] and pol_n = [-1+1*j;-5]). The poles at -0.1 + 1j is almost cancelled by a zero at -0.2 + 1j and the pole at -2 is exactly cancelled (zer = [-0.2+1*j;-2]). The eigenvector corresponding to the new pole -1 + 1j must have its first and second entries equal to zero, the other eigenvector must have its first and fourth entries equal to zero (option 'z' for both assignments and d_p = [[1;2] [1;4]]).
a=[-1 0 0 0;0 -.1 -1 0;0 1 -.1 0; 0 0 0 -2];
b=[0 0 1;1 1 1;0 1 0;1 0 1];
sys = syslin('c',a,b,eye(4,4));
key = 'z';
d_p = [[1;2] [1;4]];
pol_o = [-0.1+1*%i;-2];
zer = [-0.2+1*%i;-2];
pol_n = [-1+1*%i;-5];
dff = ff_assgn(sys,0,pol_o,zer,pol_n,key,d_p);
The results can be checked by computing the eigenvectors after connection of dff and sys in series. On the diagonal basis, the entries of the ``B-matrix'' in front of eigenvalues of pol_o must be close to zero (poles made almost uncontrollable). |