home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / octa21fb.zip / octave / SCRIPTS.ZIP / scripts.fat / control / sysreord.m < prev    next >
Text File  |  1999-12-24  |  2KB  |  58 lines

  1. ## Copyright (C) 1996 Auburn University.  All Rights Reserved
  2. ##
  3. ## This file is part of Octave. 
  4. ##
  5. ## Octave is free software; you can redistribute it and/or modify it 
  6. ## under the terms of the GNU General Public License as published by the 
  7. ## Free Software Foundation; either version 2, or (at your option) any 
  8. ## later version. 
  9. ## 
  10. ## Octave is distributed in the hope that it will be useful, but WITHOUT 
  11. ## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
  12. ## FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License 
  13. ## for more details.
  14. ## 
  15. ## You should have received a copy of the GNU General Public License 
  16. ## along with Octave; see the file COPYING.  If not, write to the Free 
  17. ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. 
  18.  
  19. ## -*- texinfo -*-
  20. ## @deftypefn {Function File } { @var{pv} =} sysreord( @var{vlen}, @{var{list})
  21. ## 
  22. ## @strong{Inputs}
  23. ## @var{vlen}=vector length, @var{list}= a subset of @code{[1:vlen]},
  24. ## 
  25. ## @strong{Outputs}
  26. ##  @var{pv}: a permutation vector to order elements of @code{[1:vlen]} in 
  27. ## @code{list} to the end of a vector.
  28. ## 
  29. ##  Used internally by @code{syscnct} to permute vector elements to their
  30. ##  desired locations.  
  31. ## @end deftypefn
  32.  
  33. function pv = sysreord (vlen, list)
  34.  
  35.   ## A. S. Hodel, Aug 1995
  36.   
  37.   ## disp('sysreord: entry')
  38.   
  39.   pv = 1:vlen;
  40.   ## make it a row vector
  41.   list = reshape(list,1,length(list));
  42.   A = pv'*ones(size(list));
  43.   B = ones(size(pv'))*list;
  44.   X = (A != B);
  45.   if(!is_vec(X))
  46.     y = min(X');
  47.   else
  48.    y = X';
  49.   endif
  50.   z = find(y == 1);
  51.   if(!isempty(z))
  52.     pv = [z, list];
  53.   else
  54.     pv = list;
  55.   endif
  56.   
  57. endfunction
  58.