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

  1. % function sys = pck(a,b,c,d)
  2. %
  3. %   Pack state-space data into a SYSTEM matrix
  4. %
  5. %   See also: MINFO, ND2SYS, PSS2SYS, SYS2PSS, UNPCK, 
  6. %             VPCK, VUNPCK, and ZP2SYS.
  7.  
  8. function sys = pck(a,b,c,d)
  9.   if nargin < 3
  10.     disp('usage: sys = pck(a,b,c,d)')
  11.     return
  12.   end
  13.   [atype,arows,acols,anum] = minfo(a);
  14.   [btype,brows,bcols,bnum] = minfo(b);
  15.   [ctype,crows,ccols,cnum] = minfo(c);
  16.   if atype ~= 'cons' | btype ~= 'cons' | ctype ~= 'cons'
  17.     error('state space data should be CONSTANT matrix')
  18.     return
  19.   end
  20.   if nargin == 3
  21.     d = zeros(crows,bcols);
  22.     drows = crows;
  23.     dcols = bcols;
  24.   else
  25.     [dtype,drows,dcols,dnum] = minfo(d);
  26.     if dtype ~= 'cons'
  27.       error('state space data should be CONSTANT matrix')
  28.       return
  29.     end
  30.   end
  31.   if arows == 0 & acols == 0
  32.     sys = d;
  33.   elseif arows == acols
  34.     if brows == arows & ccols == arows & bcols == dcols & crows == drows
  35.       rs = [arows ; zeros(arows+crows-1,1)];
  36.       bs = [zeros(1,acols+bcols) -inf];
  37.       sys = [a b;c d];
  38.       sys = [sys rs;bs];
  39.     else
  40.       error('ABCD dimensions are not compatible')
  41.       return
  42.     end
  43.   else
  44.     error('A matrix must be square')
  45.     return
  46.   end
  47. %
  48. % Copyright MUSYN INC 1991,  All Rights Reserved
  49.