From: <par...@us...> - 2012-04-11 07:20:55
|
Revision: 10184 http://octave.svn.sourceforge.net/octave/?rev=10184&view=rev Author: paramaniac Date: 2012-04-11 07:20:44 +0000 (Wed, 11 Apr 2012) Log Message: ----------- control-devel: fix corner case in detrend method (set experiments with only 1 sample to zero) Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/@iddata/detrend.m Added Paths: ----------- trunk/octave-forge/extra/control-devel/devel/test_frd2iddata.m Added: trunk/octave-forge/extra/control-devel/devel/test_frd2iddata.m =================================================================== --- trunk/octave-forge/extra/control-devel/devel/test_frd2iddata.m (rev 0) +++ trunk/octave-forge/extra/control-devel/devel/test_frd2iddata.m 2012-04-11 07:20:44 UTC (rev 10184) @@ -0,0 +1,15 @@ +sys = ss (-2,3,4,5) + +H = idfrd (sys) + +H.frequency +H.responsedata + + +dat = iddata (H) +dat.y +H.responsedata + +dat.u % alles 1! +dat.frequency +H.frequency \ No newline at end of file Modified: trunk/octave-forge/extra/control-devel/inst/@iddata/detrend.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/detrend.m 2012-04-11 05:23:52 UTC (rev 10183) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/detrend.m 2012-04-11 07:20:44 UTC (rev 10184) @@ -38,9 +38,18 @@ error ("iddata: detrend: second argument must be a positve integer"); endif + [n, p, m] = size (dat); + dat.y = cellfun (@(y) detrend (y, ord), dat.y, "uniformoutput", false); dat.u = cellfun (@(u) detrend (u, ord), dat.u, "uniformoutput", false); + ## if a MIMO experiment has only 1 sample, detrend works + ## row-wisely instead of column-wisely + ## therefore we set these experiments to zero + idx = (n == 1); + dat.y(idx) = zeros (1, p); + dat.u(idx) = zeros (1, m); + endfunction This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |