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

  1. %function [delfx,cost,sm] = fullbsg(m,x,blk,blkp,lb)
  2. function [delfx,cost,sm,flopcnt] = fullbsg(m,x,blk,blkp,lb)
  3.  flopin = flops;
  4.  
  5. %     i think that length(x) = nblk-1  always, so there is a
  6. %     bit of redundance. this looks like it is set up fine for
  7. %     nonsquare full blocks. in fortran/c version, a lot can
  8. %     be saved by computing only the singular vector needed, and
  9. %     probably it is wise to do some "searching" for min(co(del))
  10.  
  11.  [nblk,dum] = size(blk);
  12.  for i=1:length(x)
  13.   x(i) = x(i) + lb;
  14.  end
  15.  
  16.  delfx = zeros(length(x),1);
  17.  
  18.  sm = m;
  19.  for i=1:nblk-1
  20.    sm(blkp(i,2):blkp(i+1,2)-1,:) = exp(x(i))*sm(blkp(i,2):blkp(i+1,2)-1,:);
  21.    sm(:,blkp(i,1):blkp(i+1,1)-1) = exp(-x(i))*sm(:,blkp(i,1):blkp(i+1,1)-1);
  22.  end
  23.  [u,s,v]=svd(sm);
  24.  cost = s(1,1);
  25.  
  26.  for i=1:nblk-1
  27.    w1 = abs( u(blkp(i,2):blkp(i+1,2)-1,1)'* u(blkp(i,2):blkp(i+1,2)-1,1) );
  28.    w2 = abs( v(blkp(i,1):blkp(i+1,1)-1,1)'* v(blkp(i,1):blkp(i+1,1)-1,1) );
  29.    delfx(i) = s(1,1) * (w1-w2);
  30.  end
  31.  
  32.  flopout = flops;
  33.  flopcnt = flopout - flopin;
  34. %
  35. % Copyright MUSYN INC 1991,  All Rights Reserved
  36.