From: <par...@us...> - 2012-09-14 11:33:50
|
Revision: 11010 http://octave.svn.sourceforge.net/octave/?rev=11010&view=rev Author: paramaniac Date: 2012-09-14 11:33:41 +0000 (Fri, 14 Sep 2012) Log Message: ----------- control: finish multiplot bode Modified Paths: -------------- trunk/octave-forge/main/control/devel/bode2.m trunk/octave-forge/main/control/devel/nyquist2.m Modified: trunk/octave-forge/main/control/devel/bode2.m =================================================================== --- trunk/octave-forge/main/control/devel/bode2.m 2012-09-14 10:07:29 UTC (rev 11009) +++ trunk/octave-forge/main/control/devel/bode2.m 2012-09-14 11:33:41 UTC (rev 11010) @@ -65,16 +65,27 @@ if (! nargout) mag_db = cellfun (@(mag) 20 * log10 (mag), mag, "uniformoutput", false); - style = repmat ({""}, 1, numel (H)); - + tmp = cellfun (@isa, varargin, {"lti"}); + sys_idx = find (tmp); tmp = cellfun (@ischar, varargin); - char_idx = find (tmp); - char_idx = char_idx(1:min (numel (H), end)); + style_idx = find (tmp); - style(1:length (char_idx)) = varargin(char_idx); + len = numel (H); + mag_args = {}; + pha_args = {}; + legend_args = cell (len, 1); - mag_args = vertcat (w, mag_db, style)(:); - pha_args = vertcat (w, pha, style)(:); + for k = 1:len + if (k == len) + lim = nargin; + else + lim = sys_idx(k+1); + endif + style = varargin(style_idx(style_idx > sys_idx(k) & style_idx <= lim)); + mag_args = cat (2, mag_args, w(k), mag_db(k), style); + pha_args = cat (2, pha_args, w(k), pha(k), style); + legend_args{k} = inputname(sys_idx(k)); + endfor subplot (2, 1, 1) semilogx (mag_args{:}) @@ -91,6 +102,7 @@ grid ("on") xlabel ("Frequency [rad/s]") ylabel ("Phase [deg]") + legend (legend_args) else mag_r = mag{1}; pha_r = pha{1}; Modified: trunk/octave-forge/main/control/devel/nyquist2.m =================================================================== --- trunk/octave-forge/main/control/devel/nyquist2.m 2012-09-14 10:07:29 UTC (rev 11009) +++ trunk/octave-forge/main/control/devel/nyquist2.m 2012-09-14 11:33:41 UTC (rev 11010) @@ -69,8 +69,8 @@ style_idx = find (tmp); len = numel (H); - plot_args_pos = {}; - plot_args_neg = {}; + pos_args = {}; + neg_args = {}; legend_args = cell (len, 1); colororder = get (gca, "colororder"); rc = rows (colororder); @@ -84,16 +84,20 @@ endif style = varargin(style_idx(style_idx > sys_idx(k) & style_idx <= lim)); if (isempty (style)) - plot_args_pos = cat (2, plot_args_pos, re{k}, im{k}, {"-", "color", col}); - plot_args_neg = cat (2, plot_args_neg, re{k}, -im{k}, {"-.", "color", col}); + pos_args = cat (2, pos_args, re{k}, im{k}, {"-", "color", col}); + neg_args = cat (2, neg_args, re{k}, -im{k}, {"-.", "color", col}); else - plot_args_pos = cat (2, plot_args_pos, re{k}, im{k}, style); - plot_args_neg = cat (2, plot_args_neg, re{k}, -im{k}, style); + pos_args = cat (2, pos_args, re{k}, im{k}, style); + neg_args = cat (2, neg_args, re{k}, -im{k}, style); endif legend_args{k} = inputname(sys_idx(k)); endfor + + ## FIXME: pos_args = cat (2, pos_args, re{k}, im{k}, {"-", "color", col}, style); + ## doesn't work! it would be nice to have default arguments that can be + ## (partially) overwritten by user-specified plot styles. - h = plot (plot_args_pos{:}, plot_args_neg{:}); + h = plot (pos_args{:}, neg_args{:}); axis ("tight") xlim (__axis_margin__ (xlim)) ylim (__axis_margin__ (ylim)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |