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

  1. function [s,ndx]=dsort(p)
  2. %DSORT    Sort complex discrete eigenvalues in descending order.
  3. %
  4. %    S=DSORT(P) sorts the complex eigenvalues in the vector P in 
  5. %    descending order by magnitude.  The unstable eigenvalues will 
  6. %    appear first.
  7. %
  8. %    [S,NDX] = DSORT(P) also returns the vector NDX containing the 
  9. %    indexes used in the sort.
  10. %
  11. %    See also: ESORT and SORT.
  12.  
  13. %    Clay M. Thompson  7-23-90
  14. %    Copyright (c) 1986-93 by the Mathworks, Inc.
  15.  
  16. error(nargchk(1,1,nargin));
  17. [m,n] = size(p);
  18. if m==1, p=p.'; [m,n] = size(p); end
  19.  
  20. [s,ndx] = sort( -abs(p) );
  21. for i=1:n, s(:,i) = p(ndx(:,i),i); end
  22.  
  23. % Work around sort bug -- Remove when new sort routine is released.
  24. for i=1:n,
  25.   k=1;
  26.   while k<length(s),
  27.     if (imag(s(k,i))~=0),
  28.       if (imag(s(k,i))<0),
  29.          s(k:k+1,i)=conj(s(k:k+1,i));
  30.          swap = ndx(k,i); ndx(k,i)=ndx(k+1,i); ndx(k+1,i)=swap;
  31.       end
  32.       k = k+2;
  33.     else
  34.       k = k+1;
  35.     end
  36.   end
  37. end
  38.