www.gusucode.com > rctobsolete 工具箱 matlab源码程序 > rctobsolete/mutools/commands/mscl.m

    % function out = mscl(mat,fac)
%
%   Scale a SYSTEM/VARYING/CONSTANT by a scalar number.
%   In a SYSTEM matrix, this command scales the B and
%   D matrices by FAC
%
%	out = fac*mat
%
%   See also: *, MMULT, SCLIN, SCLOUT, and SCLIV.

%   Copyright 1991-2004 MUSYN Inc. and The MathWorks, Inc.

function out = mscl(mat,fac)
  if nargin <= 1
    disp('usage: out = mscl(mat,fac)')
    return
  end
  [nrf,ncf] = size(fac);
  if nrf ~= 1 | ncf ~= 1
    error('second argument should be a scalar')
    return
  else
    [mtype,mrows,mcols,mnum] = minfo(mat);
    if mtype == 'vary'
      [vd,rp,indv] = vunpck(mat);
      out = zeros(mrows*mnum+1,mcols+1);
      out(mrows*mnum+1,mcols+1) = inf;
      out(mrows*mnum+1,mcols) = mnum;
      out(1:mnum,mcols+1) = indv;
      out(1:mrows*mnum,1:mcols) = fac*vd;
    elseif mtype == 'syst'
      [a,b,c,d] = unpck(mat);
      out=pck(a,fac*b,c,fac*d);
    elseif mtype == 'cons'
      out = fac*mat;
    else
      out = [];
    end
  end
%
%