home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 10 / 10.iso / l / l455 / 2.ddi / MUTOOLS1.DI$ / SRESID.M < prev    next >
Encoding:
Text File  |  1993-03-11  |  1.3 KB  |  45 lines

  1. % function sysout = sresid(sys,ord)
  2. %
  3. %   Residulizes the input SYSTEM SYS of order N to a SYSTEM, SYSOUT
  4. %   of order ORD.  SRESID assumes that the system matrix has been
  5. %   ordered such that the last (N-ORD) states are to be residulized.
  6. %
  7. %   See also: RIFD, STRANS, STATECC, and TRUNC.
  8.  
  9. function sysout = sresid(sys,ord)
  10.  if nargin ~= 2
  11.    disp('usage: sysout = sresid(sys,ord)')
  12.    return
  13.  end
  14. if isempty(ord)
  15.    return
  16.  end
  17.  if ord < 0 | (floor(ord) ~= ceil(ord))
  18.    error(['ORD should be a nonnegative integer'])
  19.    return
  20.  end
  21.  [mtype,mrows,mcols,mnum] = minfo(sys);
  22.  if mtype == 'syst'
  23.    if ord > mnum
  24.      ord = mnum
  25.    end
  26.    if mnum == 0
  27.      disp('input matrix has no states')
  28.    else
  29.      sysout = zeros((ord+mrows+1),(ord+mcols+1));
  30.      sysout(1,ord+mcols+1) = ord;
  31.      sysout((ord+mrows+1),(ord+mcols+1)) = -Inf;
  32.      n11 = ord;
  33.      abcd = sys([1:n11 (mnum+1):(mnum+mrows)],[1:n11 (mnum+1):(mnum+mcols)]);
  34.      a12c2 = sys([1:n11 (mnum+1):(mnum+mrows)],[(n11+1):mnum]);
  35.      a21b2 = sys([(n11+1):mnum],[1:n11 (mnum+1):(mnum+mcols)]);
  36.      a22 = sys((n11+1):mnum,(n11+1):mnum);
  37.      sysout(1:ord+mrows,1:ord+mcols) = abcd-a12c2*(a22\a21b2);
  38.    end
  39.  else
  40.    error('input matrix is not a SYSTEM matrix')
  41.    return
  42.  end
  43. %
  44. % Copyright MUSYN INC 1991,  All Rights Reserved
  45.