changeset 10891:940bdd8afc53 octave-forge

control: finish multiplot initial and impulse functions
author paramaniac
date Sat, 22 Sep 2012 10:30:58 +0000
parents c4d55047aa4e
children 49febd1ba1cf
files main/control/inst/impulse.m main/control/inst/initial.m
diffstat 2 files changed, 46 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/main/control/inst/impulse.m	Sat Sep 22 10:26:10 2012 +0000
+++ b/main/control/inst/impulse.m	Sat Sep 22 10:30:58 2012 +0000
@@ -1,4 +1,4 @@
-## Copyright (C) 2009   Lukas F. Reichlin
+## Copyright (C) 2009, 2012   Lukas F. Reichlin
 ##
 ## This file is part of LTI Syncope.
 ##
@@ -54,22 +54,35 @@
 
 ## Author: Lukas Reichlin <lukas.reichlin@gmail.com>
 ## Created: October 2009
-## Version: 0.1
-
-function [y_r, t_r, x_r] = impulse (sys, tfinal = [], dt = [])
+## Version: 0.2
 
-  ## TODO: multiplot feature:   impulse (sys1, "b", sys2, "r", ...)
+function [y_r, t_r, x_r] = impulse (varargin)
 
-  if (nargin == 0 || nargin > 3)
+  if (nargin == 0)
     print_usage ();
   endif
+  
+  if (nargout)
+    sysname = {};
+  else  
+    sys_idx = find (cellfun (@isa, varargin, {"lti"}));
+    len = length (sys_idx);
+    sysname = cell (len, 1);
+    for k = 1 : len
+      try
+        sysname{k} = inputname(sys_idx(k));
+      catch
+        sysname{k} = "";
+      end_try_catch
+    endfor
+  endif
 
-  [y, t, x] = __time_response__ (sys, "impulse", ! nargout, tfinal, dt, [], inputname (1));
+  [y, t, x] = __time_response__ ("impulse", varargin, sysname, ! nargout);
 
   if (nargout)
-    y_r = y;
-    t_r = t;
-    x_r = x;
+    y_r = y{1};
+    t_r = t{1};
+    x_r = x{1};
   endif
 
 endfunction
--- a/main/control/inst/initial.m	Sat Sep 22 10:26:10 2012 +0000
+++ b/main/control/inst/initial.m	Sat Sep 22 10:30:58 2012 +0000
@@ -1,4 +1,4 @@
-## Copyright (C) 2009   Lukas F. Reichlin
+## Copyright (C) 2009, 2012   Lukas F. Reichlin
 ##
 ## This file is part of LTI Syncope.
 ##
@@ -66,22 +66,35 @@
 
 ## Author: Lukas Reichlin <lukas.reichlin@gmail.com>
 ## Created: October 2009
-## Version: 0.1
-
-function [y_r, t_r, x_r] = initial (sys, x0, tfinal = [], dt = [])
+## Version: 0.2
 
-  ## TODO: multiplot feature:   initial (sys1, "b", sys2, "r", ..., x0, ...)
+function [y_r, t_r, x_r] = initial (varargin)
 
-  if (nargin < 2 || nargin > 4)
+  if (nargin < 2)
     print_usage ();
   endif
 
-  [y, t, x] = __time_response__ (sys, "initial", ! nargout, tfinal, dt, x0, inputname (1));
+  if (nargout)
+    sysname = {};
+  else  
+    sys_idx = find (cellfun (@isa, varargin, {"lti"}));
+    len = length (sys_idx);
+    sysname = cell (len, 1);
+    for k = 1 : len
+      try
+        sysname{k} = inputname(sys_idx(k));
+      catch
+        sysname{k} = "";
+      end_try_catch
+    endfor
+  endif
+
+  [y, t, x] = __time_response__ ("initial", varargin, sysname, ! nargout);
 
   if (nargout)
-    y_r = y;
-    t_r = t;
-    x_r = x;
+    y_r = y{1};
+    t_r = t{1};
+    x_r = x{1};
   endif
 
 endfunction