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

  1. % function out = randel(blk,nrm)
  2. %
  3. %   Generates a random, block structured perturbation 
  4. %   with specified norm (e.g. max singular value). The 
  5. %   block structure is specified by the argument BLK,
  6. %   and the norm is specified by the argument NRM.
  7. %
  8. %   See also: CRAND, DYPERT, and SYSRAND.
  9.  
  10. function  out = randel(blk,nrm,rflg)
  11.  if nargin < 2
  12.    disp('usage: pert = randel(blk,nrm)')
  13.    return
  14.  end
  15.  [nblk,dum] = size(blk);
  16.  blkp = ptrs(blk);
  17.  out = zeros(blkp(nblk+1,1)-1,blkp(nblk+1,2)-1);
  18.  for i=1:nblk
  19.    if blk(i,2) == 0;
  20.      delta = crand(1);
  21.      if nargin == 3
  22.        delta = real(delta);
  23.      end
  24.      delta = nrm*delta/abs(delta);
  25.      deltab = delta*eye(blk(i,1));
  26.    else
  27.      delta = crand(blk(i,1),blk(i,2));
  28.      if nargin == 3
  29.        delta = real(delta);
  30.      end
  31.      deltab = nrm*delta/(norm(delta));
  32.    end
  33.    out(blkp(i,1):blkp(i+1,1)-1,blkp(i,2):blkp(i+1,2)-1) = deltab;
  34.  end
  35. %
  36. % Copyright MUSYN INC 1991,  All Rights Reserved
  37.