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

  1. %function pert = mkpfrv(rv,blk,nrp,ncp)
  2. function pert = mkpfrv(rv,blk,nrp,ncp)
  3.  [nblk,x] = size(blk);
  4.  tot = 0;
  5.  for i=1:nblk
  6.   if blk(i,2) == 0
  7.     tot = tot + 1;
  8.   else
  9.     tot = tot + blk(i,1)*blk(i,2);
  10.   end
  11.  end
  12.  if tot == max(size(rv))
  13.    pert = zeros(nrp,ncp);
  14.    rp=1; cp = 1;
  15.    loc = 1;
  16.    for i=1:nblk
  17.     if blk(i,2) == 0
  18.       pert(rp:rp+blk(i,1)-1,cp:cp+blk(i,1)-1) = ...
  19.          rv(loc)*eye(blk(i,1));
  20.       loc = loc + 1;
  21.       rp = rp + blk(i,1); cp = cp + blk(i,1);
  22.     else
  23.       tmp = zeros(blk(i,1),blk(i,2));
  24.       for j=1:blk(i,1)
  25.         tmp(j,:) = rv(loc:loc+blk(i,2)-1);
  26.         loc =  loc + blk(i,2);
  27.       end
  28.       pert(rp:rp+blk(i,1)-1,cp:cp+blk(i,2)-1) = tmp;
  29.       rp = rp + blk(i,1); cp = cp + blk(i,2);
  30.     end
  31.    end
  32.  else
  33.    error('inconsistent block and perturbation data')
  34.    return
  35.  end
  36. %
  37. % Copyright MUSYN INC 1991,  All Rights Reserved
  38.