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

    % function [trowd,trowg] = sigmaub(blk)

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

function [trowd,trowg] = sigmaub(blk)

  [nblk,dum] = size(blk);
  trowd = [];
  trowg = [];
  blkcf = [];
  blkcr = [];
  blkr = [];
  for i=1:nblk
    if blk(i,1) < 0
      blkr = [blkr;blk(i,:)];
    elseif blk(i,2) == 0
      blkcr = [blkcr;blk(i,:)];
    else
      blkcf = [blkcf;blk(i,:)];
    end
  end
  blkn = [blkr;blkcr;blkcf];
  for i=1:nblk
    if blkn(i,2) == 0 & blkn(i,1) > 0 % COMPLEX REPEATED SCALAR
      trowd = [trowd reshape(eye(blkn(i,1)),1,blkn(i,1)^2)];
    elseif blkn(i,2) == 0 & blkn(i,1) < 0 % REAL REPEATED SCALAR
      trowd = [trowd reshape(eye(abs(blkn(i,1))),1,blkn(i,1)^2)];
      trowg = [trowg zeros(1,abs(blkn(i,1)))];
    elseif blkn(i,1) == -1 & blkn(i,2) == -1 % REAL 1x1
      trowd = [trowd 1];
      trowg = [trowg 0];
    else % COMPLEX FULL BLOCK
      trowd = [trowd 1];
    end
  end