From: <par...@us...> - 2011-11-10 18:52:00
|
Revision: 9049 http://octave.svn.sourceforge.net/octave/?rev=9049&view=rev Author: paramaniac Date: 2011-11-10 18:51:53 +0000 (Thu, 10 Nov 2011) Log Message: ----------- control-devel: check size of weights Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/__modred_ab09id__.m trunk/octave-forge/extra/control-devel/inst/__modred_check_weight__.m Modified: trunk/octave-forge/extra/control-devel/inst/__modred_ab09id__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__modred_ab09id__.m 2011-11-10 18:47:54 UTC (rev 9048) +++ trunk/octave-forge/extra/control-devel/inst/__modred_ab09id__.m 2011-11-10 18:51:53 UTC (rev 9049) @@ -47,6 +47,7 @@ endif [a, b, c, d, tsam, scaled] = ssdata (sys); + [p, m] = size (sys); dt = isdt (sys); ## default arguments @@ -72,10 +73,10 @@ val = varargin{k+1}; switch (prop) case {"left", "v"} - [av, bv, cv, dv, jobv] = __modred_check_weight__ (val, dt); + [av, bv, cv, dv, jobv] = __modred_check_weight__ (val, dt, p, []); case {"right", "w"} - [aw, bw, cw, dw, jobw] = __modred_check_weight__ (val, dt); + [aw, bw, cw, dw, jobw] = __modred_check_weight__ (val, dt, [], m); case {"order", "n", "nr"} [nr, ordsel] = __modred_check_order__ (val); Modified: trunk/octave-forge/extra/control-devel/inst/__modred_check_weight__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__modred_check_weight__.m 2011-11-10 18:47:54 UTC (rev 9048) +++ trunk/octave-forge/extra/control-devel/inst/__modred_check_weight__.m 2011-11-10 18:51:53 UTC (rev 9049) @@ -22,7 +22,7 @@ ## Created: November 2011 ## Version: 0.1 -function [a, b, c, d, job] = __modred_check_weight__ (sys, dt) +function [a, b, c, d, job] = __modred_check_weight__ (sys, dt, p = [], m = []) sys = ss (sys); # could be non-lti, therefore ssdata would fail @@ -30,6 +30,16 @@ error ("modred: ct/dt"); # TODO: error message endif + [pw, mw] = size (sys); + + if (! isempty (p) && mw != p) + error ("modred: left weight requires %d inputs", p); + endif + + if (! isempty (m) && pw != m) + error ("modred: right weight requires %d outputs", m); + endif + [a, b, c, d] = ssdata (sys); job = 1; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |