home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / octa21fb.zip / octave / SCRIPTS.ZIP / scripts.fat / control / syschnal.m < prev    next >
Text File  |  1999-12-24  |  5KB  |  145 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 } { } syschnaml 
  21. ##  used internally in syschnam
  22. ##  item olist: index list 
  23. ##  old_names: original list names
  24. ##  inames: new names
  25. ##  listname: name of index list
  26. ## 
  27. ##  combines the two string lists old_names and inames
  28. ## @end deftypefn
  29.  
  30. function old_names = syschnaml (olist, old_names, inames, listname)
  31.   ## $Revision: 2.1.14.5 $
  32.   ## $Log: syschnaml.m,v $
  33.   ## Revision 2.1.14.5  1999/09/22  21:55:46  scotte
  34.   ## Auburn copyright fixed; krylov.m patched to fix bug
  35.   ##
  36.   ## Revision 2.1.14.4  1999/07/21  19:49:21  scotte
  37.   ## sysgroup, sysadd, sysmult, syssub accept variable # of input args
  38.   ##
  39.   ## Revision 1.3  1998/07/17 15:08:50  hodelas
  40.   ## use isempty instead of max(size(...))
  41.   ## 
  42.   ## Revision 1.2  1998/07/01 16:23:39  hodelas
  43.   ## Updated c2d, d2c to perform bilinear transforms.
  44.   ## Updated several files per bug updates from users.
  45.   ## 
  46.   ## Revision 1.5  1997/02/28 23:47:26  hodel
  47.   ## fixed bug in checking parameters; (inames dimension not checked against olist)
  48.   ## a.s.hodel@eng.auburn.edu
  49.   ## 
  50.   ## Revision 1.4  1997/02/13 15:56:37  hodel
  51.   ## added code to convert zeros in the name matrix to blanks
  52.   ## a.s.hodel@eng.auburn.edu
  53.   ## 
  54.   ## Revision 1.3  1997/02/13 15:11:17  hodel
  55.   ## fixed bug when len_my < len_out a.s.hodel@eng.auburn.edu
  56.   ## 
  57.   ## Revision 1.2  1997/02/12 22:54:50  hodel
  58.   ## fixed string matrix <-> numerical matrix problem
  59.   
  60.   probstr = [];
  61.   if( max(olist) > rows(old_names) )
  62.     probstr = ["index list value(s) exceed(s) number of signals (", ...
  63.       num2str(rows(old_names)),")"];
  64.  
  65.   elseif( length(olist) > rows(inames) )
  66.     probstr = ["index list dimension exceeds number of replacement names (", ...
  67.       num2str(rows(inames)),")"];
  68.  
  69.   elseif(isempty(olist))
  70.     probstr = [];    # do nothing, no changes
  71.  
  72.   elseif(min(size(olist)) != 1 )
  73.     probstr = "index list must be either a vector or an empty matrix";
  74.  
  75.   elseif(max(olist) > rows(old_names))
  76.     probstr = ["max(",listname,")=",num2str(max(olist))," > ", ...
  77.     num2str(rows(old_names)),", too big"];
  78.  
  79.   elseif(min(olist) < 1)
  80.     probstr = ["min(",listname,")=",num2str(min(olist))," < 1, too small"];
  81.  
  82.   else
  83.     if( length(olist)  == 1)
  84.     len_in = columns(inames);
  85.     len_out = columns(old_names);
  86.  
  87.       if (len_in < len_out)
  88.         inames(1,(len_in+1):(len_out)) = zeros(1,(len_out - len_in));
  89.       endif
  90.  
  91.       old_names(olist,1:length(inames)) = inames;
  92.     elseif(length(olist) > 1)
  93.       for ii=1:length(olist)
  94.         mystr = inames(ii,:);
  95.     len_my = columns(mystr);
  96.         len_out = columns(old_names);
  97.        
  98.         if (len_my < len_out)
  99.           mystr(1,(len_my+1):(len_out)) = " "*ones(1,(len_out - len_my));
  100.       len_my = len_out;
  101.         endif
  102.  
  103.         old_names(olist(ii),1:len_my) = mystr;
  104.       endfor
  105.     endif
  106.   endif
  107.   if(!isempty(probstr))
  108.     ## the following lines are NOT debugging code!
  109.     disp("Problem in syschnam: old names are")
  110.     outlist(old_names,"    ")
  111.     disp("new names are")
  112.     outlist(inames,"    ")
  113.     disp("list indices are")
  114.     disp(olist)
  115.     error(sprintf("syschnam: \"%s\" dim=(%d x %d)--\n\t%s\n", ...
  116.     listname, rows(olist), columns(olist),probstr));
  117.   endif
  118.  
  119.   ## change zeros  to blanks
  120.   if( find(old_names == 0) )
  121.     ## disp("syschnaml: old_names contains zeros ")
  122.     ## old_names
  123.     ## disp("/syschnaml");
  124.  
  125.     [ii,jj] = find(old_names == 0);
  126.     for idx=1:length(ii)
  127.       old_names(ii(idx),jj(idx)) = " ";
  128.     endfor
  129.  
  130.     ## disp("syschnaml: old_names fixed zeros ")
  131.     ## old_names
  132.     ## disp("/syschnaml");
  133.   endif
  134.  
  135.   ## just in case it's not a string anymore
  136.   if( !isstr(old_names) )
  137.     old_names = setstr(old_names);
  138.   endif
  139.   
  140.   ## disp("syschnaml: exit, old_names=")
  141.   ## old_names
  142.   ## disp("/syschnaml: exiting")
  143.   
  144. endfunction
  145.