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

  1. %function [dleft,drighti,sm,sens] = ...
  2. %   ap_up_bd(mat,nblk,blk,blkp,repp,rnblk,rblk,rblkp,opt)
  3. %
  4. %    Approximate upper bound for mu.  Not to be called by user.
  5.  
  6. function [dleft,drighti,sm,sens] = ...
  7.    ap_up_bd(mat,nblk,blk,blkp,repp,rnblk,rblk,rblkp,opt)
  8.  
  9.  [nr nc] = size(mat);
  10.  tol = 0.00001; % DO WE NEED THIS????
  11.  maxit = 10;
  12.  minpercd = 0.01;
  13.  
  14.  if length(repp) == 0    % no repeated blocks ?
  15.    if nblk==1
  16.     d = 1;
  17.     else
  18.     for i=1:nblk
  19.      for j=1:nblk
  20.       sm(i,j) = norm(mat(blkp(i,2):blkp(i+1,2)-1,blkp(j,1):blkp(j+1,1)-1));
  21.          end %for j
  22.        end %for i
  23.        d = sblkbal(sm,opt);
  24.    end %if nblk==1
  25.    [rdleft,rdrighti] = mkd(d,blk,nblk,blkp);
  26.    drighti = diag(rdrighti);
  27.    dleft = diag(rdleft);
  28.    sm = dleft*mat*drighti;
  29.  else
  30.    sm = mat;
  31.    oldfnorm = norm(sm,'fro');
  32.    dleft = eye(nr);
  33.    drighti = eye(nc);
  34.    ii = 0;
  35.    percd = 1;
  36.    while ii < maxit & percd > minpercd
  37.      ii = ii+1;
  38.      [rmat,dl,dri] = frotmat(sm,nblk,blk,blkp,repp,dleft,drighti);
  39.      cm = zeros(rnblk,rnblk);
  40.      for i=1:rnblk
  41.        for j=1:rnblk
  42.            cm(i,j)=...
  43.            norm(rmat(rblkp(i,2):rblkp(i+1,2)-1,rblkp(j,1):rblkp(j+1,1)-1));
  44.        end %for j
  45.      end %for i
  46.      d = sblkbal(cm,opt);
  47.      [ndl ndri] = mkd(d,rblk,rnblk,rblkp);
  48.      dleft = diag(ndl)*dl;
  49.      drighti = dri*diag(ndri);
  50.      sm = diag(ndl)*rmat*diag(ndri);
  51.      fnorm = norm(sm,'fro');
  52.      percd = abs((oldfnorm - fnorm)/fnorm);
  53.      oldfnorm = fnorm;
  54.    end % while
  55.  end % if length(repp) == 0
  56.  sens = zeros(1,nblk);
  57.  for i=1:nblk
  58.    row = [sm(blkp(i,2):blkp(i+1,2)-1,1:blkp(i,1)-1) ...
  59.           sm(blkp(i,2):blkp(i+1,2)-1,blkp(i+1,1):nc)];
  60.    col = [sm(1:blkp(i,2)-1,blkp(i,1):blkp(i+1,1)-1) ; ...
  61.           sm(blkp(i+1,2):nr,blkp(i,1):blkp(i+1,1)-1)];
  62.    sens(i) = norm(row) + norm(col);
  63.  end
  64. %
  65. % Copyright MUSYN INC 1991,  All Rights Reserved
  66.