Mercurial > forge
changeset 9624:dbea4e0ca957 octave-forge
control-devel: use recursion instead of for-loop, fix subsref tsam
author | paramaniac |
---|---|
date | Sat, 10 Mar 2012 19:46:27 +0000 |
parents | 40a1e6b36726 |
children | c2e1990614a2 |
files | extra/control-devel/inst/@iddata/subsref.m |
diffstat | 1 files changed, 21 insertions(+), 25 deletions(-) [+] |
line wrap: on
line diff
--- a/extra/control-devel/inst/@iddata/subsref.m Sat Mar 10 19:45:06 2012 +0000 +++ b/extra/control-devel/inst/@iddata/subsref.m Sat Mar 10 19:46:27 2012 +0000 @@ -21,35 +21,30 @@ ## Author: Lukas Reichlin <lukas.reichlin@gmail.com> ## Created: February 2012 -## Version: 0.1 +## Version: 0.2 function a = subsref (a, s) - if (isempty (s)) - error ("iddata: subsref: missing index"); + if (numel (s) == 0) + return; endif - for k = 1 : numel (s) - if (isa (a, "iddata")) - switch (s(k).type) - case "()" - idx = s(k).subs; - if (numel (idx) > 4) - error ("iddata: subsref: need four or less indices"); - else - a = __dat_prune__ (a, idx{:}); - endif - case "." - fld = s(k).subs; - a = get (a, fld); - otherwise - error ("iddata: subsref: invalid subscript type"); - endswitch - else # not an iddata set - a = subsref (a, s(k:end)); - return; - endif - endfor + switch (s(1).type) + case "()" + idx = s(1).subs; + if (numel (idx) > 4) + error ("iddata: subsref: need four or less indices"); + else + a = __dat_prune__ (a, idx{:}); + endif + case "." + fld = s(1).subs; + a = get (a, fld); + otherwise + error ("iddata: subsref: invalid subscript type"); + endswitch + + a = subsref (a, s(2:end)); endfunction @@ -69,5 +64,6 @@ endif dat.expname = dat.expname(exp_idx); + dat.tsam = dat.tsam(exp_idx); -endfunction \ No newline at end of file +endfunction