home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 10 / 10.iso / l / l460 / 2.ddi / MATFUN.DI$ / RSF2CSF.M < prev    next >
Encoding:
Text File  |  1993-03-07  |  747 b   |  26 lines

  1. function [U,T] = rsf2csf(U,T)
  2. %RSF2CSF Real block diagonal form to complex diagonal form.
  3. %    [U,T] = RSF2CSF(U,T) converts a real, upper quasi-triangular
  4. %    Schur form to a complex, upper triangular Schur form.
  5.  
  6. %    Copyright (c) 1984-93 by The MathWorks, Inc.
  7.  
  8. % Find complex unitary similarities to zero subdiagonal elements.
  9. n = max(size(T));
  10. m = n;
  11. while m > 1,
  12.    s = abs(T(m-1,m-1)) + abs(T(m,m));
  13.    if s + abs(T(m,m-1)) > s
  14.       k = m-1:m;
  15.       mu = eig(T(k,k)) - T(m,m);
  16.       r = norm([mu(1), T(m,m-1)]);
  17.       c = mu(1)/r;  s = T(m,m-1)/r;
  18.       G = [c' s; -s c];
  19.       j = m-1:n;  T(k,j) = G*T(k,j);
  20.       i = 1:m;  T(i,k) = T(i,k)*G';
  21.       i = 1:n;  U(i,k) = U(i,k)*G';
  22.    end
  23.    T(m,m-1) = 0;
  24.    m = m-1;
  25. end
  26.