function D1 = iocat(dim,D1,D2)
% Concatenates models along input (2) or output (1) dimension.

%   Copyright 1986-2020 The MathWorks, Inc.
if isfinite(D1) && isfinite(D2)
   nx1 = size(D1.a,1);  nx2 = size(D2.a,1);
   D1 = iocat@ltipack.AbstractSS(dim,D1,D2);
   if nx2>0
      D1 = appendStateInfo(D1,D2,nx1,nx2);
   end
else
   % One system is NaN
   [ny1,nu1] = iosize(D1);
   [ny2,nu2] = iosize(D2);
   if dim==1
      D1 = createGain(D1,NaN(ny1+ny2,nu1));
   else
      D1 = createGain(D1,NaN(ny1,nu1+nu2));
   end
end