towards matlab
This commit is contained in:
43
matlab/rscale.m
Normal file
43
matlab/rscale.m
Normal file
@@ -0,0 +1,43 @@
|
||||
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;
|
||||
Reference in New Issue
Block a user