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