comparison scripts/control/system/cellidx.m @ 7136:59dcf01bb3e3

[project @ 2007-11-08 20:18:25 by jwe]
author jwe
date Thu, 08 Nov 2007 20:18:26 +0000
parents a1dbe9d80eee
children
comparison
equal deleted inserted replaced
7135:8aa770b6c5bf 7136:59dcf01bb3e3
32 ## an error message is returned in @var{errmsg}. If only one output 32 ## an error message is returned in @var{errmsg}. If only one output
33 ## argument is requested, then @var{cellidx} prints @var{errmsg} to the 33 ## argument is requested, then @var{cellidx} prints @var{errmsg} to the
34 ## screen and exits with an error. 34 ## screen and exits with an error.
35 ## @end deftypefn 35 ## @end deftypefn
36 36
37 function [idxvec,errmsg] = cellidx(listvar,strlist) 37 function [idxvec,errmsg] = cellidx (listvar, strlist)
38 38
39 if(nargin != 2) 39 if (nargin != 2)
40 print_usage (); 40 print_usage ();
41 endif 41 endif
42 42
43 if(ischar(strlist)) 43 if (ischar (strlist))
44 tmp = strlist; 44 tmp = strlist;
45 strlist = {}; 45 strlist = {};
46 for kk=1:rows(tmp) 46 for kk = 1:rows(tmp)
47 strlist{kk} = deblank(tmp(kk,:)); 47 strlist{kk} = deblank (tmp(kk,:));
48 endfor 48 endfor
49 endif 49 endif
50 50
51 if(ischar(listvar)) 51 if (ischar (listvar))
52 tmp = listvar; 52 tmp = listvar;
53 listvar = {}; 53 listvar = {};
54 for kk=1:rows(tmp) 54 for kk = 1:rows(tmp)
55 listvar{kk} = deblank(tmp(kk,:)); 55 listvar{kk} = deblank (tmp(kk,:));
56 endfor 56 endfor
57 endif 57 endif
58 58
59 ## initialize size of idxvec (for premature return) 59 ## initialize size of idxvec (for premature return)
60 idxvec = zeros(length(strlist),1); 60 idxvec = zeros (length(strlist), 1);
61 61
62 errmsg = ""; 62 errmsg = "";
63 if(!is_signal_list(listvar)) 63 if (! is_signal_list (listvar))
64 errmsg = "listvar must be a list of strings"; 64 errmsg = "listvar must be a list of strings";
65 elseif(!is_signal_list(strlist)) 65 elseif (! is_signal_list (strlist))
66 errmsg = "strlist must be a list of strings"; 66 errmsg = "strlist must be a list of strings";
67 endif 67 endif
68 68
69 if(length(errmsg)) 69 if (length (errmsg))
70 if(nargout < 2) error(errmsg); 70 if (nargout < 2)
71 else return; 71 error (errmsg);
72 else
73 return;
74 endif
72 endif 75 endif
73 endif
74 76
75 nsigs = length(listvar); 77 nsigs = length(listvar);
76 for idx = 1:length(strlist) 78 for idx = 1:length(strlist)
77 signame = strlist{idx}; 79 signame = strlist{idx};
78 for jdx = 1:nsigs 80 for jdx = 1:nsigs
79 if( strcmp(signame,listvar{jdx}) ) 81 if (strcmp (signame, listvar{jdx}) )
80 if(idxvec(idx) != 0) 82 if (idxvec(idx) != 0)
81 warning("Duplicate signal name %s (%d,%d)\n", ... 83 warning ("Duplicate signal name %s (%d,%d)\n",
82 listvar{jdx},jdx,idxvec(idx)); 84 listvar{jdx}, jdx, idxvec(idx));
85 else
86 idxvec(idx) = jdx;
87 endif
88 endif
89 endfor
90 if (idxvec(idx) == 0)
91 errmsg = sprintf ("Did not find %s", signame);
92 if (nargout == 1)
93 error (errmsg);
83 else 94 else
84 idxvec(idx) = jdx; 95 break;
85 endif 96 endif
86 endif 97 endif
87 endfor 98 endfor
88 if(idxvec(idx) == 0)
89 errmsg = sprintf("Did not find %s",signame);
90 if(nargout == 1)
91 error(errmsg);
92 else
93 break
94 end
95 endif
96 endfor
97 99
98 endfunction 100 endfunction