From: <par...@us...> - 2012-03-07 17:40:14
|
Revision: 9769 http://octave.svn.sourceforge.net/octave/?rev=9769&view=rev Author: paramaniac Date: 2012-03-07 17:40:03 +0000 (Wed, 07 Mar 2012) Log Message: ----------- control-devel: fix cat for time series Modified Paths: -------------- trunk/octave-forge/extra/control-devel/devel/test_iddata.m trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m Modified: trunk/octave-forge/extra/control-devel/devel/test_iddata.m =================================================================== --- trunk/octave-forge/extra/control-devel/devel/test_iddata.m 2012-03-07 17:22:56 UTC (rev 9768) +++ trunk/octave-forge/extra/control-devel/devel/test_iddata.m 2012-03-07 17:40:03 UTC (rev 9769) @@ -45,3 +45,6 @@ un = iddata ({(1:10).', (21:30).'}, {(41:50).', (61:70).'}, [], "expname", strseq ("alpha", 1:2)); vn = iddata ({(11:20).', (31:40).'}, {(51:60).', (71:80).'}, [], "expname", strseq ("beta", 1:2)); n = [un; vn] +cat (1, un) + +cat (1, b) Modified: trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m 2012-03-07 17:22:56 UTC (rev 9768) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m 2012-03-07 17:40:03 UTC (rev 9769) @@ -30,22 +30,32 @@ [n, p, m, e] = cellfun (@size, varargin, "uniformoutput", false); switch (dim) - case 1 # vertcat - catenate samples + case 1 # vertcat - catenate samples check_experiments (tmp, e); check_outputs (tmp, p); check_inputs (tmp, m); y = cellfun (@vertcat, tmp.y, "uniformoutput", false); - u = cellfun (@vertcat, tmp.u, "uniformoutput", false); + + if (m{1} > 0) # m(2:end) are equal, tested by check_inputs + u = cellfun (@vertcat, tmp.u, "uniformoutput", false); + else # time series don't have inputs + u = []; + endif - case 2 # horzcat - catenate channels; + case 2 # horzcat - catenate channels check_experiments (tmp, e); check_samples (n); y = cellfun (@horzcat, tmp.y, "uniformoutput", false); - u = cellfun (@horzcat, tmp.u, "uniformoutput", false); + + if (m{1} > 0) + u = cellfun (@horzcat, tmp.u, "uniformoutput", false); + else + u = []; + endif - case 3 # merge - catenate experiments + case 3 # merge - catenate experiments check_outputs (tmp, p); check_inputs (tmp, m); @@ -63,7 +73,7 @@ function check_experiments (tmp, e) - if (numel (e) > 1 && ! isequal (e{:})) # isequal doesn't work with less than 2 arguments + if (numel (e) > 1 && ! isequal (e{:})) # isequal doesn't work with less than 2 arguments error ("iddata: cat: number of experiments don't match [%s]", \ num2str (cell2mat (e), "%d ")); endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |