Mercurial > hg > octave-nkf
diff scripts/control/system/sysreorder.m @ 3430:65b3519ac3a1
[project @ 2000-01-14 03:44:03 by jwe]
author | jwe |
---|---|
date | Fri, 14 Jan 2000 03:50:02 +0000 |
parents | |
children | 7923abdeb4e5 |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/scripts/control/system/sysreorder.m @@ -0,0 +1,58 @@ +## Copyright (C) 1996 Auburn University. All rights reserved. +## +## This file is part of Octave. +## +## Octave is free software; you can redistribute it and/or modify it +## under the terms of the GNU General Public License as published by the +## Free Software Foundation; either version 2, or (at your option) any +## later version. +## +## Octave is distributed in the hope that it will be useful, but WITHOUT +## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +## for more details. +## +## You should have received a copy of the GNU General Public License +## along with Octave; see the file COPYING. If not, write to the Free +## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +## -*- texinfo -*- +## @deftypefn {Function File} {@var{pv} =} sysreorder (@var{vlen}, @{var{list}) +## +## @strong{Inputs} +## @var{vlen}=vector length, @var{list}= a subset of @code{[1:vlen]}, +## +## @strong{Outputs} +## @var{pv}: a permutation vector to order elements of @code{[1:vlen]} in +## @code{list} to the end of a vector. +## +## Used internally by @code{sysconnect} to permute vector elements to their +## desired locations. +## @end deftypefn + +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1995 + +function pv = sysreorder (vlen, list) + + ## disp('sysreorder: entry') + + pv = 1:vlen; + ## make it a row vector + list = reshape(list,1,length(list)); + A = pv'*ones(size(list)); + B = ones(size(pv'))*list; + X = (A != B); + if(!is_vector(X)) + y = min(X'); + else + y = X'; + endif + z = find(y == 1); + if(!isempty(z)) + pv = [z, list]; + else + pv = list; + endif + +endfunction