Mercurial > forge
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