44 lines
1.2 KiB
Matlab
44 lines
1.2 KiB
Matlab
function[Nbar]=rscale(a,b,c,d,k)
|
|
% Given the single-input linear system:
|
|
% .
|
|
% x = Ax + Bu
|
|
% y = Cx + Du
|
|
% and the feedback matrix K,
|
|
%
|
|
% the function rscale(sys,K) or rscale(A,B,C,D,K)
|
|
% finds the scale factor N which will
|
|
% eliminate the steady-state error to a step reference
|
|
% for a continuous-time, single-input system
|
|
% with full-state feedback using the schematic below:
|
|
%
|
|
% /---------\
|
|
% R + u | . |
|
|
% ---> N --->() ---->| X=Ax+Bu |--> y=Cx ---> y
|
|
% -| \---------/
|
|
% | |
|
|
% |<---- K <----|
|
|
%
|
|
%8/21/96 Yanjie Sun of the University of Michigan
|
|
% under the supervision of Prof. D. Tilbury
|
|
%6/12/98 John Yook, Dawn Tilbury revised
|
|
|
|
error(nargchk(2,5,nargin));
|
|
|
|
% --- Determine which syntax is being used ---
|
|
nargin1 = nargin;
|
|
if (nargin1==2), % System form
|
|
[A,B,C,D] = ssdata(a);
|
|
K=b;
|
|
elseif (nargin1==5), % A,B,C,D matrices
|
|
A=a; B=b; C=c; D=d; K=k;
|
|
else error('Input must be of the form (sys,K) or (A,B,C,D,K)')
|
|
end;
|
|
|
|
% compute Nbar
|
|
s = size(A,1);
|
|
Z = [zeros([1,s]) 1];
|
|
N = inv([A,B;C,D])*Z';
|
|
Nx = N(1:s);
|
|
Nu = N(1+s);
|
|
Nbar=Nu + K*Nx;
|