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

  1. %function [rmat,dl,dri] = frotmat(mat,nblk,blk,blkp,rpp,dl,dri)
  2. %    Performs a unitary rotation of mat.  Called by muappr.
  3.  
  4.  function [rmat,dl,dri] = frotmat(mat,nblk,blk,blkp,rpp,dl,dri)
  5.  [nr nc] = size(mat);
  6.  il = eye(nr);
  7.  ir = eye(nc);
  8.  for i=1:length(rpp)
  9.     row = mat(blkp(rpp(i),2):blkp(rpp(i)+1,2)-1,:);
  10.     col = mat(:,blkp(rpp(i),1):blkp(rpp(i)+1,1)-1);
  11.     w = row*row' - col'*col;
  12.     [u,lam] = eig(w);
  13. tp=dl(blkp(rpp(i),2):blkp(rpp(i)+1,2)-1,blkp(rpp(i),2):blkp(rpp(i)+1,2)-1);
  14. dl(blkp(rpp(i),2):blkp(rpp(i)+1,2)-1,blkp(rpp(i),2):blkp(rpp(i)+1,2)-1)=u'*tp;
  15. tp=dri(blkp(rpp(i),1):blkp(rpp(i)+1,1)-1,blkp(rpp(i),1):blkp(rpp(i)+1,1)-1);
  16. dri(blkp(rpp(i),1):blkp(rpp(i)+1,1)-1,blkp(rpp(i),1):blkp(rpp(i)+1,1)-1)=tp*u;
  17. il(blkp(rpp(i),2):blkp(rpp(i)+1,2)-1,blkp(rpp(i),2):blkp(rpp(i)+1,2)-1)=u';
  18. ir(blkp(rpp(i),1):blkp(rpp(i)+1,1)-1,blkp(rpp(i),1):blkp(rpp(i)+1,1)-1)=u;
  19.    end
  20.  end
  21.  rmat = il*mat*ir;
  22.  
  23. %
  24. % Copyright MUSYN INC 1991,  All Rights Reserved
  25.