This list is closed, nobody may subscribe to it.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(10) |
Aug
(5) |
Sep
(3) |
Oct
(41) |
Nov
(41) |
Dec
(33) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(75) |
Feb
(10) |
Mar
(170) |
Apr
(174) |
May
(66) |
Jun
(11) |
Jul
(10) |
Aug
(44) |
Sep
(73) |
Oct
(28) |
Nov
(139) |
Dec
(52) |
2003 |
Jan
(35) |
Feb
(93) |
Mar
(62) |
Apr
(10) |
May
(55) |
Jun
(70) |
Jul
(37) |
Aug
(16) |
Sep
(56) |
Oct
(31) |
Nov
(57) |
Dec
(83) |
2004 |
Jan
(85) |
Feb
(67) |
Mar
(27) |
Apr
(37) |
May
(75) |
Jun
(85) |
Jul
(160) |
Aug
(68) |
Sep
(104) |
Oct
(25) |
Nov
(39) |
Dec
(23) |
2005 |
Jan
(10) |
Feb
(45) |
Mar
(43) |
Apr
(19) |
May
(108) |
Jun
(31) |
Jul
(41) |
Aug
(23) |
Sep
(65) |
Oct
(58) |
Nov
(44) |
Dec
(54) |
2006 |
Jan
(96) |
Feb
(27) |
Mar
(69) |
Apr
(59) |
May
(67) |
Jun
(35) |
Jul
(13) |
Aug
(461) |
Sep
(160) |
Oct
(399) |
Nov
(32) |
Dec
(72) |
2007 |
Jan
(316) |
Feb
(305) |
Mar
(318) |
Apr
(54) |
May
(194) |
Jun
(173) |
Jul
(282) |
Aug
(91) |
Sep
(227) |
Oct
(365) |
Nov
(168) |
Dec
(18) |
2008 |
Jan
(71) |
Feb
(111) |
Mar
(155) |
Apr
(173) |
May
(70) |
Jun
(67) |
Jul
(55) |
Aug
(83) |
Sep
(32) |
Oct
(68) |
Nov
(80) |
Dec
(29) |
2009 |
Jan
(46) |
Feb
(18) |
Mar
(95) |
Apr
(76) |
May
(140) |
Jun
(98) |
Jul
(84) |
Aug
(123) |
Sep
(94) |
Oct
(131) |
Nov
(142) |
Dec
(125) |
2010 |
Jan
(128) |
Feb
(158) |
Mar
(172) |
Apr
(134) |
May
(94) |
Jun
(84) |
Jul
(32) |
Aug
(127) |
Sep
(167) |
Oct
(109) |
Nov
(69) |
Dec
(78) |
2011 |
Jan
(39) |
Feb
(58) |
Mar
(52) |
Apr
(47) |
May
(56) |
Jun
(76) |
Jul
(55) |
Aug
(54) |
Sep
(165) |
Oct
(255) |
Nov
(328) |
Dec
(263) |
2012 |
Jan
(82) |
Feb
(147) |
Mar
(400) |
Apr
(216) |
May
(209) |
Jun
(160) |
Jul
(86) |
Aug
(141) |
Sep
(156) |
Oct
(6) |
Nov
|
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
(1) |
Oct
|
Nov
(1) |
Dec
(2) |
2016 |
Jan
|
Feb
(2) |
Mar
(2) |
Apr
(1) |
May
(1) |
Jun
(2) |
Jul
(1) |
Aug
(1) |
Sep
|
Oct
|
Nov
(1) |
Dec
|
2019 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2021 |
Jan
|
Feb
|
Mar
|
Apr
(3) |
May
(4) |
Jun
(8) |
Jul
(2) |
Aug
(5) |
Sep
(9) |
Oct
|
Nov
|
Dec
|
From: <par...@us...> - 2012-03-07 18:53:59
|
Revision: 9770 http://octave.svn.sourceforge.net/octave/?rev=9770&view=rev Author: paramaniac Date: 2012-03-07 17:51:32 +0000 (Wed, 07 Mar 2012) Log Message: ----------- control-devel: replace [] by {} to simplify code in cat :-) Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m trunk/octave-forge/extra/control-devel/inst/@iddata/iddata.m trunk/octave-forge/extra/control-devel/inst/__adjust_iddata__.m 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:40:03 UTC (rev 9769) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m 2012-03-07 17:51:32 UTC (rev 9770) @@ -36,25 +36,15 @@ check_inputs (tmp, m); y = cellfun (@vertcat, tmp.y, "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 + u = cellfun (@vertcat, tmp.u, "uniformoutput", false); case 2 # horzcat - catenate channels check_experiments (tmp, e); check_samples (n); y = cellfun (@horzcat, tmp.y, "uniformoutput", false); - - if (m{1} > 0) - u = cellfun (@horzcat, tmp.u, "uniformoutput", false); - else - u = []; - endif - + u = cellfun (@horzcat, tmp.u, "uniformoutput", false); + case 3 # merge - catenate experiments check_outputs (tmp, p); check_inputs (tmp, m); Modified: trunk/octave-forge/extra/control-devel/inst/@iddata/iddata.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/iddata.m 2012-03-07 17:40:03 UTC (rev 9769) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/iddata.m 2012-03-07 17:51:32 UTC (rev 9770) @@ -56,7 +56,7 @@ ## Created: October 2011 ## Version: 0.1 -function dat = iddata (y = [], u = [], tsam = [], varargin) +function dat = iddata (y = {}, u = {}, tsam = {}, varargin) if (nargin == 1 && isa (y, "iddata")) dat = y; Modified: trunk/octave-forge/extra/control-devel/inst/__adjust_iddata__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__adjust_iddata__.m 2012-03-07 17:40:03 UTC (rev 9769) +++ trunk/octave-forge/extra/control-devel/inst/__adjust_iddata__.m 2012-03-07 17:51:32 UTC (rev 9770) @@ -28,7 +28,7 @@ endif if (isempty (u)) - u = []; # avoid [](nx0) and the like + u = {}; # avoid [](nx0) and the like elseif (iscell (u)) u = reshape (u, [], 1); else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-03-07 18:46:46
|
Revision: 9773 http://octave.svn.sourceforge.net/octave/?rev=9773&view=rev Author: paramaniac Date: 2012-03-07 18:46:36 +0000 (Wed, 07 Mar 2012) Log Message: ----------- control-devel: touch up cat Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m Modified: trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m 2012-03-07 18:18:12 UTC (rev 9772) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m 2012-03-07 18:46:36 UTC (rev 9773) @@ -26,54 +26,78 @@ function dat = cat (dim, varargin) + ## I think this code is pretty elegant because it works for + ## any number of arguments and without a single for-loop :-) + + ## if this overloaded cat method is called, it is guaranteed that + ## * nargin > 0 + ## * at least one argument is an iddata object + if (! is_real_scalar (dim)) + print_usage (); + endif + + ## store all datasets in a single struct 'tmp' tmp = cellfun (@iddata, varargin); [n, p, m, e] = cellfun (@size, varargin, "uniformoutput", false); + ## default values for metadata + ## some of them are overwritten in the switch statement below + expname = tmp(1).expname; + outname = tmp(1).outname; + outunit = tmp(1).outunit; + inname = tmp(1).inname; + inunit = tmp(1).inunit; + 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); + ## note that this also works for time series (u = {}) - 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); + outname = vertcat (tmp.outname); outunit = vertcat (tmp.outunit); inname = vertcat (tmp.inname); inunit = vertcat (tmp.inunit); - y = cellfun (@horzcat, tmp.y, "uniformoutput", false); - u = cellfun (@horzcat, tmp.u, "uniformoutput", false); - - case 3 # merge - catenate experiments + case 3 # merge - catenate experiments check_outputs (tmp, p); check_inputs (tmp, m); - - expname = vertcat (tmp.expname); y = vertcat (tmp.y); u = vertcat (tmp.u); - + + expname = vertcat (tmp.expname); + otherwise - error ("iddata: cat: '%s' is an invalid dimension", num2str (dim)); + error ("iddata: cat: '%d' is an invalid dimension", dim); endswitch dat = iddata (y, u); - - %dat.outname = tmp(1).outname; - %dat.outuni + ## copy metadata + dat.expname = expname; + dat.outname = outname; + dat.outunit = outunit; + dat.inname = inname; + dat.inunit = inunit; + endfunction 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. |
From: <par...@us...> - 2012-03-07 18:18:23
|
Revision: 9772 http://octave.svn.sourceforge.net/octave/?rev=9772&view=rev Author: paramaniac Date: 2012-03-07 18:18:12 +0000 (Wed, 07 Mar 2012) Log Message: ----------- control-devel: work on cat (metadata) 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 18:14:30 UTC (rev 9771) +++ trunk/octave-forge/extra/control-devel/devel/test_iddata.m 2012-03-07 18:18:12 UTC (rev 9772) @@ -47,4 +47,6 @@ n = [un; vn] cat (1, un) +cat (1, un, un, vn, vn, vn) + 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 18:14:30 UTC (rev 9771) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m 2012-03-07 18:18:12 UTC (rev 9772) @@ -42,12 +42,19 @@ check_experiments (tmp, e); check_samples (n); + outname = vertcat (tmp.outname); + outunit = vertcat (tmp.outunit); + inname = vertcat (tmp.inname); + inunit = vertcat (tmp.inunit); + y = cellfun (@horzcat, tmp.y, "uniformoutput", false); u = cellfun (@horzcat, tmp.u, "uniformoutput", false); case 3 # merge - catenate experiments check_outputs (tmp, p); check_inputs (tmp, m); + + expname = vertcat (tmp.expname); y = vertcat (tmp.y); u = vertcat (tmp.u); @@ -57,6 +64,9 @@ endswitch dat = iddata (y, u); + + %dat.outname = tmp(1).outname; + %dat.outuni endfunction This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
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. |
From: <par...@us...> - 2012-03-07 17:23:02
|
Revision: 9768 http://octave.svn.sourceforge.net/octave/?rev=9768&view=rev Author: paramaniac Date: 2012-03-07 17:22:56 +0000 (Wed, 07 Mar 2012) Log Message: ----------- control-devel: add comments Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m 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:06:48 UTC (rev 9767) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m 2012-03-07 17:22:56 UTC (rev 9768) @@ -127,10 +127,14 @@ function bool = compare_strings (str, varargin) if (nargin > 1) + ## compare n-th string of first cell with n-th string of remaining cells tmp = cellfun (@(x) strcmp (str, x), varargin, "uniformoutput", false); + ## check whether all strings of each pair are equal tmp = cellfun (@all, tmp); + ## check whether all pairs are equal bool = all (tmp); else + ## one or no cell at all is always equal to itself bool = true; endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-03-07 17:06:54
|
Revision: 9767 http://octave.svn.sourceforge.net/octave/?rev=9767&view=rev Author: paramaniac Date: 2012-03-07 17:06:48 +0000 (Wed, 07 Mar 2012) Log Message: ----------- control-devel: test for equal units when concatening datasets 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 14:50:15 UTC (rev 9766) +++ trunk/octave-forge/extra/control-devel/devel/test_iddata.m 2012-03-07 17:06:48 UTC (rev 9767) @@ -39,4 +39,9 @@ w = cat (1, u, v) -cat (3, d, e) \ No newline at end of file +cat (3, d, e) + + +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] Modified: trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m 2012-03-07 14:50:15 UTC (rev 9766) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m 2012-03-07 17:06:48 UTC (rev 9767) @@ -31,23 +31,23 @@ switch (dim) case 1 # vertcat - catenate samples - check_experiments (e); - check_outputs (p); - check_inputs (m); + 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); case 2 # horzcat - catenate channels; - check_experiments (e); + check_experiments (tmp, e); check_samples (n); y = cellfun (@horzcat, tmp.y, "uniformoutput", false); u = cellfun (@horzcat, tmp.u, "uniformoutput", false); case 3 # merge - catenate experiments - check_outputs (p); - check_inputs (m); + check_outputs (tmp, p); + check_inputs (tmp, m); y = vertcat (tmp.y); u = vertcat (tmp.u); @@ -61,33 +61,53 @@ endfunction -function check_experiments (e) +function check_experiments (tmp, e) - if (numel (e) > 1 && ! isequal (e{:})) + 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 + + if (! compare_strings (tmp.expname)) + warning ("iddata: cat: experiment names don't match") + endif endfunction -function check_outputs (p) +function check_outputs (tmp, p) if (numel (p) > 1 && ! isequal (p{:})) error ("iddata: cat: number of outputs don't match [%s]", \ num2str (cell2mat (p), "%d ")); endif + + if (! compare_strings (tmp.outname)) + warning ("iddata: cat: output names don't match") + endif + if (! compare_strings (tmp.outunit)) + warning ("iddata: cat: output units don't match") + endif + endfunction -function check_inputs (m) +function check_inputs (tmp, m) if (numel (m) > 1 && ! isequal (m{:})) error ("iddata: cat: number of inputs don't match [%s]", \ num2str (cell2mat (m), "%d ")); endif + if (! compare_strings (tmp.inname)) + warning ("iddata: cat: input names don't match") + endif + + if (! compare_strings (tmp.inunit)) + warning ("iddata: cat: input units don't match") + endif + endfunction @@ -101,4 +121,20 @@ endfunction +## kind of strcmp for more than two arguments +## return true if all cells of strings are equal +## and false otherwise +function bool = compare_strings (str, varargin) + + if (nargin > 1) + tmp = cellfun (@(x) strcmp (str, x), varargin, "uniformoutput", false); + tmp = cellfun (@all, tmp); + bool = all (tmp); + else + bool = true; + endif + +endfunction + + %!error (cat (1, iddata (1, 1), iddata ({2, 3}, {2, 3}))); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-03-07 14:50:21
|
Revision: 9766 http://octave.svn.sourceforge.net/octave/?rev=9766&view=rev Author: paramaniac Date: 2012-03-07 14:50:15 +0000 (Wed, 07 Mar 2012) Log Message: ----------- control-devel: work on display routine (2) Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/@iddata/display.m Modified: trunk/octave-forge/extra/control-devel/inst/@iddata/display.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/display.m 2012-03-07 14:38:05 UTC (rev 9765) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/display.m 2012-03-07 14:50:15 UTC (rev 9766) @@ -31,20 +31,21 @@ [n, p, m, e] = size (dat); - str = ["Time domain dataset '", datname, "' containing ", num2str(e), " experiment"]; - if (e > 1) - str = [str, "s"]; - endif + str = ["Time domain dataset '", datname, "' containing ", num2str(sum(n)), " samples"]; disp (""); disp (str); disp (""); - disp (__horzcat__ (__col2str__ (expname, "Experiment"), __vec2str__ (n, "Samples"), __vec2str__ (cell2mat (dat.tsam), "Sampling Interval"))); + disp (__horzcat__ (__col2str__ (expname, "Experiment"), \ + __vec2str__ (n, "Samples"), \ + __vec2str__ (cell2mat (dat.tsam), "Sampling Interval"))); disp (""); - disp (__horzcat__ (__col2str__ (outname, "Outputs"), __col2str__ (dat.outunit, "Unit (if specified)"))); + disp (__horzcat__ (__col2str__ (outname, "Outputs"), \ + __col2str__ (dat.outunit, "Unit (if specified)"))); disp (""); - disp (__horzcat__ (__col2str__ (inname, "Inputs"), __col2str__ (dat.inunit, "Unit (if specified)"))); + disp (__horzcat__ (__col2str__ (inname, "Inputs"), \ + __col2str__ (dat.inunit, "Unit (if specified)"))); disp (""); endfunction @@ -69,11 +70,11 @@ len = rows (col); str = strjust (strvcat (col), "left"); if (columns (str) == 0) - str = repmat (" ", len, 1); %[repmat(" ", len, 1), str]; + str = repmat (" ", len, 1); endif line = repmat ("-", 1, max (columns (str), columns (title))); str = strvcat (title, line, str); - %str = strvcat (title, str); + endfunction @@ -95,6 +96,3 @@ str = strvcat (title, line, str); endfunction - - - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-03-07 14:38:16
|
Revision: 9765 http://octave.svn.sourceforge.net/octave/?rev=9765&view=rev Author: paramaniac Date: 2012-03-07 14:38:05 +0000 (Wed, 07 Mar 2012) Log Message: ----------- control-devel: work on display routine Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/@iddata/display.m Modified: trunk/octave-forge/extra/control-devel/inst/@iddata/display.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/display.m 2012-03-07 13:22:39 UTC (rev 9764) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/display.m 2012-03-07 14:38:05 UTC (rev 9765) @@ -40,36 +40,40 @@ disp (str); disp (""); - disp (horzcat (__col2str__ (expname, "Experiment"), __vec2str__ (n, "Samples"), __vec2str__ (cell2mat (dat.tsam), "Sampling Interval"))); + disp (__horzcat__ (__col2str__ (expname, "Experiment"), __vec2str__ (n, "Samples"), __vec2str__ (cell2mat (dat.tsam), "Sampling Interval"))); disp (""); - disp (horzcat (__col2str__ (outname, "Outputs"), __col2str__ (dat.outunit, "Unit (if specified)"))); + disp (__horzcat__ (__col2str__ (outname, "Outputs"), __col2str__ (dat.outunit, "Unit (if specified)"))); disp (""); - disp (horzcat (__col2str__ (inname, "Inputs"), __col2str__ (dat.inunit, "Unit (if specified)"))); + disp (__horzcat__ (__col2str__ (inname, "Inputs"), __col2str__ (dat.inunit, "Unit (if specified)"))); disp (""); - -%{ - str = strjust (strvcat (expname), "left"); - space = (repmat (" ", e, 1)); - str = [space, str]; -%} + endfunction -%{ -function str = __ - space = repmat (" ", len+2, 1); - str = [space, str]; +function str = __horzcat__ (col, varargin) + len = rows (col); + sp2 = repmat (" ", len, 1); + sp4 = repmat (" ", len, 1); + str = [sp2, col]; + + for k = 2 : nargin + str = [str, sp4, varargin{k-1}]; + endfor + endfunction -%} + function str = __col2str__ (col, title) len = rows (col); str = strjust (strvcat (col), "left"); - str = [repmat(" ", len, 1), str]; - str = strvcat (title, str); - + if (columns (str) == 0) + str = repmat (" ", len, 1); %[repmat(" ", len, 1), str]; + endif + line = repmat ("-", 1, max (columns (str), columns (title))); + str = strvcat (title, line, str); + %str = strvcat (title, str); endfunction @@ -79,19 +83,16 @@ tmp = isfinite (vec); tmp = abs (vec(tmp & vec != 0)); if (isempty (tmp) || min (tmp) < 1e-3 || max (tmp) > 1e4) - str = arrayfun (@(x) sprintf (" %.3e", x), vec, "uniformoutput", false); + str = arrayfun (@(x) sprintf ("%.3e", x), vec, "uniformoutput", false); elseif (all (floor (tmp) == tmp)) - str = arrayfun (@(x) sprintf (" %d", x), vec, "uniformoutput", false); + str = arrayfun (@(x) sprintf ("%d", x), vec, "uniformoutput", false); else - str = arrayfun (@(x) sprintf (" %.4f", x), vec, "uniformoutput", false); + str = arrayfun (@(x) sprintf ("%.4f", x), vec, "uniformoutput", false); endif str = strjust (char (str), "right"); - %str = [repmat(" ", len, 1), str]; - str = strvcat (title, str); - - %if (nargin > 1) - % str = [str, repmat(post, length (vec), 1)]; - %endif + line = repmat ("-", 1, max (columns (str), columns (title))); + %str = strvcat (title, str) + str = strvcat (title, line, str); endfunction This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-03-07 13:22:50
|
Revision: 9764 http://octave.svn.sourceforge.net/octave/?rev=9764&view=rev Author: paramaniac Date: 2012-03-07 13:22:39 +0000 (Wed, 07 Mar 2012) Log Message: ----------- control-devel: return size of iddata properties Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/@iddata/__property_names__.m Modified: trunk/octave-forge/extra/control-devel/inst/@iddata/__property_names__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/__property_names__.m 2012-03-07 12:45:17 UTC (rev 9763) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/__property_names__.m 2012-03-07 13:22:39 UTC (rev 9764) @@ -16,8 +16,8 @@ ## along with LTI Syncope. If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {[@var{props}, @var{vals}] =} __property_names__ (@var{sys}) -## Return the list of properties as well as the assignable values for an LTI object sys. +## @deftypefn {Function File} {[@var{props}, @var{vals}] =} __property_names__ (@var{dat}) +## Return the list of properties as well as the assignable values for an iddata set. ## @end deftypefn ## Author: Lukas Reichlin <luk...@gm...> @@ -26,6 +26,8 @@ function [props, vals] = __property_names__ (dat) + [n, p, m, e] = size (dat); + ## cell vector of iddata-specific properties props = {"y"; "outname"; @@ -41,15 +43,15 @@ "userdata"}; ## cell vector of lti-specific assignable values - vals = {"p-by-1 cell vector of matrices"; - "p-by-1 cell vector of strings"; - "p-by-1 cell vector of strings"; - "m-by-1 cell vector of matrices"; - "m-by-1 cell vector of strings"; - "m-by-1 cell vector of strings"; - "scalar (sample time in seconds)"; + vals = {sprintf("(%dx1) cell vector of (nx%d) matrices", e, p); + sprintf("(%dx1) cell vector of strings", p); + sprintf("(%dx1) cell vector of strings", p); + sprintf("(%dx1) cell vector of (nx%d) matrices", e, m); + sprintf("(%dx1) cell vector of strings", m); + sprintf("(%dx1) cell vector of strings", m); + sprintf("(%dx1) cell vector of scalars", e); "string"; - "e-by-1 cell vector of strings"; + sprintf("(%dx1) cell vector of strings", e); "string"; "string or cell of strings"; "any data type"}; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-03-07 12:45:28
|
Revision: 9763 http://octave.svn.sourceforge.net/octave/?rev=9763&view=rev Author: paramaniac Date: 2012-03-07 12:45:17 +0000 (Wed, 07 Mar 2012) Log Message: ----------- control-devel: doc fixes Modified Paths: -------------- trunk/octave-forge/extra/control-devel/INDEX trunk/octave-forge/extra/control-devel/inst/@iddata/horzcat.m trunk/octave-forge/extra/control-devel/inst/@iddata/merge.m trunk/octave-forge/extra/control-devel/inst/@iddata/vertcat.m Modified: trunk/octave-forge/extra/control-devel/INDEX =================================================================== --- trunk/octave-forge/extra/control-devel/INDEX 2012-03-07 12:34:04 UTC (rev 9762) +++ trunk/octave-forge/extra/control-devel/INDEX 2012-03-07 12:45:17 UTC (rev 9763) @@ -1,11 +1,16 @@ control-devel >> Control Theory Examples Experimental Data Handling + iddata + @iddata/cat + @iddata/diff @iddata/get - iddata + @iddata/horzcat + @iddata/merge @iddata/plot @iddata/set @iddata/size + @iddata/vertcat System Identification fitfrd moesp Modified: trunk/octave-forge/extra/control-devel/inst/@iddata/horzcat.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/horzcat.m 2012-03-07 12:34:04 UTC (rev 9762) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/horzcat.m 2012-03-07 12:45:17 UTC (rev 9763) @@ -16,7 +16,8 @@ ## along with LTI Syncope. If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {@var{dat} =} horzcat (@var{dat1}, @var{dat2}, @dots{}) +## @deftypefn {Function File} {@var{dat} =} [@var{dat1}, @var{dat2}, @dots{}] +## @deftypefnx {Function File} {@var{dat} =} horzcat (@var{dat1}, @var{dat2}, @dots{}) ## Horizontal concatenation of iddata datasets. ## The outputs and inputs are concatenated in the following way: ## @code{dat.y@{e@} = [dat1.y@{e@}, dat2.y@{e@}, @dots{}]} Modified: trunk/octave-forge/extra/control-devel/inst/@iddata/merge.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/merge.m 2012-03-07 12:34:04 UTC (rev 9762) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/merge.m 2012-03-07 12:45:17 UTC (rev 9763) @@ -16,7 +16,7 @@ ## along with LTI Syncope. If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {@var{dat} =} vertcat (@var{dat1}, @var{dat2}, @dots{}) +## @deftypefn {Function File} {@var{dat} =} merge (@var{dat1}, @var{dat2}, @dots{}) ## Concatenate experiments of iddata datasets. ## The experiments are concatenated in the following way: ## @code{dat.y = [dat1.y; dat2.y; @dots{}]} Modified: trunk/octave-forge/extra/control-devel/inst/@iddata/vertcat.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/vertcat.m 2012-03-07 12:34:04 UTC (rev 9762) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/vertcat.m 2012-03-07 12:45:17 UTC (rev 9763) @@ -16,7 +16,8 @@ ## along with LTI Syncope. If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {@var{dat} =} vertcat (@var{dat1}, @var{dat2}, @dots{}) +## @deftypefn {Function File} {@var{dat} =} [@var{dat1}; @var{dat2}; @dots{}] +## @deftypefnx {Function File} {@var{dat} =} vertcat (@var{dat1}, @var{dat2}, @dots{}) ## Vertical concatenation of iddata datasets. ## The samples are concatenated in the following way: ## @code{dat.y@{e@} = [dat1.y@{e@}; dat2.y@{e@}; @dots{}]} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-03-07 12:34:11
|
Revision: 9762 http://octave.svn.sourceforge.net/octave/?rev=9762&view=rev Author: paramaniac Date: 2012-03-07 12:34:04 +0000 (Wed, 07 Mar 2012) Log Message: ----------- control-devel: texinfo help strings for concatenation methods Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/@iddata/horzcat.m trunk/octave-forge/extra/control-devel/inst/@iddata/merge.m trunk/octave-forge/extra/control-devel/inst/@iddata/vertcat.m Modified: trunk/octave-forge/extra/control-devel/inst/@iddata/horzcat.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/horzcat.m 2012-03-07 10:14:59 UTC (rev 9761) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/horzcat.m 2012-03-07 12:34:04 UTC (rev 9762) @@ -16,8 +16,13 @@ ## along with LTI Syncope. If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {@var{dat} =} cat (@var{dim}, @var{dat1}, @var{dat2}, @dots{}) -## Concatenation of iddata objects along dimension @var{dim}. +## @deftypefn {Function File} {@var{dat} =} horzcat (@var{dat1}, @var{dat2}, @dots{}) +## Horizontal concatenation of iddata datasets. +## The outputs and inputs are concatenated in the following way: +## @code{dat.y@{e@} = [dat1.y@{e@}, dat2.y@{e@}, @dots{}]} +## @code{dat.u@{e@} = [dat1.u@{e@}, dat2.u@{e@}, @dots{}]} +## where @var{e} denotes the experiment. +## The number of experiments and samples must be equal for all datasets. ## @end deftypefn ## Author: Lukas Reichlin <luk...@gm...> Modified: trunk/octave-forge/extra/control-devel/inst/@iddata/merge.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/merge.m 2012-03-07 10:14:59 UTC (rev 9761) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/merge.m 2012-03-07 12:34:04 UTC (rev 9762) @@ -16,8 +16,12 @@ ## along with LTI Syncope. If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {@var{dat} =} cat (@var{dim}, @var{dat1}, @var{dat2}, @dots{}) -## Concatenation of iddata objects along dimension @var{dim}. +## @deftypefn {Function File} {@var{dat} =} vertcat (@var{dat1}, @var{dat2}, @dots{}) +## Concatenate experiments of iddata datasets. +## The experiments are concatenated in the following way: +## @code{dat.y = [dat1.y; dat2.y; @dots{}]} +## @code{dat.u = [dat1.u; dat2.u; @dots{}]} +## The number of outputs and inputs must be equal for all datasets. ## @end deftypefn ## Author: Lukas Reichlin <luk...@gm...> Modified: trunk/octave-forge/extra/control-devel/inst/@iddata/vertcat.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/vertcat.m 2012-03-07 10:14:59 UTC (rev 9761) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/vertcat.m 2012-03-07 12:34:04 UTC (rev 9762) @@ -16,8 +16,13 @@ ## along with LTI Syncope. If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {@var{dat} =} cat (@var{dim}, @var{dat1}, @var{dat2}, @dots{}) -## Concatenation of iddata objects along dimension @var{dim}. +## @deftypefn {Function File} {@var{dat} =} vertcat (@var{dat1}, @var{dat2}, @dots{}) +## Vertical concatenation of iddata datasets. +## The samples are concatenated in the following way: +## @code{dat.y@{e@} = [dat1.y@{e@}; dat2.y@{e@}; @dots{}]} +## @code{dat.u@{e@} = [dat1.u@{e@}; dat2.u@{e@}; @dots{}]} +## where @var{e} denotes the experiment. +## The number of experiments, outputs and inputs must be equal for all datasets. ## @end deftypefn ## Author: Lukas Reichlin <luk...@gm...> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-03-07 10:15:10
|
Revision: 9761 http://octave.svn.sourceforge.net/octave/?rev=9761&view=rev Author: paramaniac Date: 2012-03-07 10:14:59 +0000 (Wed, 07 Mar 2012) Log Message: ----------- control-devel: touch up diff Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/@iddata/diff.m Modified: trunk/octave-forge/extra/control-devel/inst/@iddata/diff.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/diff.m 2012-03-07 10:04:59 UTC (rev 9760) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/diff.m 2012-03-07 10:14:59 UTC (rev 9761) @@ -16,16 +16,22 @@ ## along with LTI Syncope. If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {@var{dat} =} cat (@var{dim}, @var{dat1}, @var{dat2}, @dots{}) -## Concatenation of iddata objects along dimension @var{dim}. +## @deftypefn {Function File} {@var{dat} =} diff (@var{dat}) +## @deftypefnx {Function File} {@var{dat} =} diff (@var{dat}, @var{k}) +## Return @var{k}-th difference of outputs and inputs of dataset @var{dat}. +## If @var{k} is not specified, default value 1 is taken. ## @end deftypefn ## Author: Lukas Reichlin <luk...@gm...> ## Created: March 2012 ## Version: 0.1 -function dat = diff (dat, k) +function dat = diff (dat, k = 1) + if (nargin > 2) # no need to test nargin == 0, this is handled by built-in diff + print_usage (); + endif + dat.y = cellfun (@(y) diff (y, k), dat.y, "uniformoutput", false); dat.u = cellfun (@(u) diff (u, k), dat.u, "uniformoutput", false); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-03-07 10:05:10
|
Revision: 9760 http://octave.svn.sourceforge.net/octave/?rev=9760&view=rev Author: paramaniac Date: 2012-03-07 10:04:59 +0000 (Wed, 07 Mar 2012) Log Message: ----------- control-devel: add test data Added Paths: ----------- trunk/octave-forge/extra/control-devel/devel/data_ib01ad.m Added: trunk/octave-forge/extra/control-devel/devel/data_ib01ad.m =================================================================== --- trunk/octave-forge/extra/control-devel/devel/data_ib01ad.m (rev 0) +++ trunk/octave-forge/extra/control-devel/devel/data_ib01ad.m 2012-03-07 10:04:59 UTC (rev 9760) @@ -0,0 +1,2010 @@ +% IB01AD EXAMPLE PROGRAM DATA +% 15 0 1 1 1000 0.0 -1.0 M C N O N N + +U = [ + 6.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 6.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 6.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 6.41 + 3.41 + 3.41 + 3.41 + 6.41 + 3.41 + 3.41 + 3.41 + 6.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 6.41 + 6.41 + 3.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 3.41 + 3.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 6.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 3.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 + 6.41 +]; + +Y = [ + 4.766099 + 4.763659 + 4.839359 + 5.002979 + 5.017629 + 5.056699 + 5.154379 + 5.361949 + 5.425439 + 5.569519 + 5.681849 + 5.742899 + 5.803949 + 5.918729 + 5.821049 + 5.447419 + 5.061589 + 4.629349 + 4.267939 + 4.011519 + 3.850349 + 3.711159 + 3.569519 + 3.518239 + 3.652549 + 3.818609 + 3.862559 + 4.011519 + 4.353409 + 4.705049 + 5.083559 + 5.344859 + 5.274039 + 5.127519 + 4.761219 + 4.451089 + 4.221539 + 4.045709 + 3.874769 + 3.730689 + 3.662319 + 3.576849 + 3.542659 + 3.479169 + 3.454749 + 3.359509 + 3.298459 + 3.225199 + 3.200779 + 3.225199 + 3.227639 + 3.274039 + 3.457189 + 3.867449 + 4.321659 + 4.492599 + 4.431549 + 4.243519 + 4.050599 + 3.857679 + 3.730689 + 3.791739 + 3.921169 + 3.955359 + 3.847909 + 3.725809 + 3.611039 + 3.716039 + 4.092109 + 4.480389 + 4.814939 + 5.054259 + 5.303339 + 5.486489 + 5.672089 + 5.779529 + 5.799069 + 5.664759 + 5.291129 + 4.880879 + 4.558529 + 4.184909 + 3.889419 + 3.708719 + 3.623249 + 3.569519 + 3.718479 + 4.033499 + 4.412009 + 4.629349 + 4.558529 + 4.394919 + 4.180019 + 4.197119 + 4.431549 + 4.714819 + 4.961459 + 5.300899 + 5.567079 + 5.681849 + 5.545099 + 5.188569 + 4.883319 + 4.600049 + 4.270379 + 4.038389 + 3.838139 + 3.711159 + 3.591499 + 3.535329 + 3.486489 + 3.476729 + 3.425439 + 3.381489 + 3.369279 + 3.364389 + 3.347299 + 3.381489 + 3.420559 + 3.413229 + 3.452309 + 3.635459 + 4.038389 + 4.375379 + 4.727029 + 5.056699 + 5.298459 + 5.532889 + 5.466959 + 5.195899 + 4.885759 + 4.763659 + 4.875989 + 5.042049 + 5.283809 + 5.491379 + 5.596379 + 5.672089 + 5.772209 + 5.830819 + 5.933379 + 5.899189 + 5.935819 + 5.894309 + 5.918729 + 5.994429 + 5.957799 + 6.031059 + 6.062809 + 6.040829 + 6.096999 + 6.123859 + 6.162929 + 6.040829 + 5.845469 + 5.772209 + 5.799069 + 5.923609 + 5.928499 + 6.001759 + 6.001759 + 6.060369 + 5.882099 + 5.510909 + 5.322879 + 5.371719 + 5.454749 + 5.437649 + 5.159269 + 4.902859 + 4.587839 + 4.502369 + 4.595159 + 4.824709 + 5.064029 + 5.271599 + 5.466959 + 5.615919 + 5.528009 + 5.254499 + 4.883319 + 4.517019 + 4.197119 + 4.001759 + 3.806399 + 3.904079 + 3.923609 + 3.869889 + 3.806399 + 3.720929 + 3.818609 + 4.140949 + 4.529229 + 4.805179 + 5.086009 + 5.339969 + 5.532889 + 5.576849 + 5.667199 + 5.791739 + 5.850349 + 5.923609 + 5.921169 + 5.977339 + 5.740459 + 5.388809 + 5.000539 + 4.849129 + 4.944369 + 5.173919 + 5.369279 + 5.447419 + 5.603709 + 5.730689 + 5.850349 + 5.979779 + 5.991989 + 6.084789 + 5.940709 + 5.803949 + 5.791739 + 5.603709 + 5.264269 + 4.946809 + 4.619579 + 4.514579 + 4.433989 + 4.285029 + 4.121419 + 3.945589 + 3.984659 + 4.219099 + 4.546319 + 4.873549 + 5.154379 + 5.388809 + 5.613479 + 5.835699 + 5.884539 + 5.955359 + 5.762439 + 5.459629 + 5.061589 + 4.707499 + 4.458409 + 4.267939 + 4.053039 + 3.943149 + 3.825929 + 3.967569 + 4.280149 + 4.480389 + 4.492599 + 4.390039 + 4.197119 + 4.111649 + 3.982219 + 3.867449 + 3.767319 + 3.872329 + 4.236189 + 4.663539 + 4.971229 + 5.066469 + 4.902859 + 4.675749 + 4.392479 + 4.099439 + 4.114089 + 4.326539 + 4.643999 + 4.971229 + 5.159269 + 5.388809 + 5.576849 + 5.652549 + 5.803949 + 5.913839 + 5.886979 + 5.799069 + 5.730689 + 5.762439 + 5.813719 + 5.821049 + 5.928499 + 6.013969 + 5.764879 + 5.413229 + 5.098219 + 4.678189 + 4.372939 + 4.392479 + 4.590279 + 4.919949 + 5.017629 + 4.858899 + 4.675749 + 4.619579 + 4.834479 + 5.090889 + 5.376599 + 5.681849 + 5.823489 + 5.952919 + 6.062809 + 6.089669 + 6.075019 + 6.026179 + 5.994429 + 6.077459 + 5.857679 + 5.701389 + 5.730689 + 5.784419 + 5.823489 + 5.894309 + 5.762439 + 5.415679 + 4.961459 + 4.595159 + 4.331429 + 4.297239 + 4.582949 + 4.861339 + 5.173919 + 5.166589 + 4.919949 + 4.607369 + 4.370499 + 4.182469 + 4.038389 + 4.145839 + 4.431549 + 4.556089 + 4.480389 + 4.375379 + 4.370499 + 4.558529 + 4.858899 + 4.895529 + 4.741679 + 4.744129 + 4.875989 + 5.105539 + 5.239849 + 5.518239 + 5.652549 + 5.723369 + 5.855239 + 5.962679 + 5.984659 + 5.984659 + 6.055479 + 6.062809 + 6.055479 + 6.070129 + 5.784419 + 5.440099 + 5.056699 + 4.941929 + 5.010299 + 5.134849 + 5.313109 + 5.479169 + 5.623249 + 5.562199 + 5.330209 + 5.010299 + 4.665979 + 4.414459 + 4.201999 + 4.048159 + 4.079899 + 4.189789 + 4.131179 + 4.004199 + 3.916289 + 3.960239 + 4.199559 + 4.624469 + 4.883319 + 5.137289 + 5.379049 + 5.623249 + 5.762439 + 5.833259 + 5.686739 + 5.366839 + 5.225199 + 5.239849 + 5.354629 + 5.508469 + 5.596379 + 5.752669 + 5.874769 + 5.906519 + 5.894309 + 5.742899 + 5.447419 + 5.024959 + 4.883319 + 4.885759 + 4.893089 + 4.714819 + 4.451089 + 4.233749 + 4.043269 + 3.864999 + 3.757559 + 3.669639 + 3.593939 + 3.547539 + 3.506029 + 3.454749 + 3.398579 + 3.361949 + 3.339969 + 3.374159 + 3.520679 + 3.713599 + 3.757559 + 3.779529 + 3.696509 + 3.777089 + 3.886979 + 3.904079 + 3.850349 + 3.965129 + 4.282589 + 4.521899 + 4.714819 + 4.971229 + 5.220319 + 5.532889 + 5.652549 + 5.781979 + 5.955359 + 6.035939 + 6.118969 + 6.133629 + 6.153159 + 6.192229 + 6.143389 + 6.167809 + 5.991989 + 5.652549 + 5.459629 + 5.437649 + 5.339969 + 5.098219 + 4.785639 + 4.492599 + 4.236189 + 4.067689 + 3.933379 + 3.823489 + 3.730689 + 3.611039 + 3.564639 + 3.549989 + 3.557309 + 3.513359 + 3.515799 + 3.694059 + 4.072579 + 4.480389 + 4.705049 + 4.612259 + 4.385149 + 4.201999 + 4.026179 + 3.904079 + 3.774649 + 3.691619 + 3.845469 + 4.201999 + 4.585399 + 4.902859 + 5.256949 + 5.510909 + 5.640339 + 5.843029 + 5.974889 + 5.935819 + 5.821049 + 5.528009 + 5.171479 + 4.810059 + 4.453529 + 4.380269 + 4.565859 + 4.805179 + 5.125079 + 5.354629 + 5.589059 + 5.764879 + 5.923609 + 5.940709 + 5.857679 + 5.694059 + 5.486489 + 5.149499 + 4.844249 + 4.541439 + 4.267939 + 4.060369 + 3.960239 + 3.789299 + 3.642779 + 3.525569 + 3.498699 + 3.454749 + 3.408349 + 3.379049 + 3.376599 + 3.361949 + 3.359509 + 3.369279 + 3.398579 + 3.579289 + 3.948029 + 4.412009 + 4.585399 + 4.514579 + 4.343639 + 4.155599 + 3.984659 + 4.043269 + 4.307009 + 4.421779 + 4.353409 + 4.223979 + 4.053039 + 3.940709 + 3.838139 + 3.730689 + 3.652549 + 3.611039 + 3.564639 + 3.496259 + 3.462069 + 3.454749 + 3.425439 + 3.379049 + 3.432769 + 3.623249 + 3.974889 + 4.380269 + 4.714819 + 5.073799 + 5.369279 + 5.603709 + 5.745349 + 5.652549 + 5.401019 + 5.015189 + 4.709939 + 4.416899 + 4.236189 + 4.236189 + 4.248399 + 4.221539 + 4.297239 + 4.590279 + 4.893089 + 5.134849 + 5.427889 + 5.379049 + 5.364389 + 5.452309 + 5.567079 + 5.672089 + 5.769769 + 5.830819 + 5.923609 + 5.965129 + 6.057919 + 6.050599 + 6.072579 + 6.111649 + 6.070129 + 5.896749 + 5.755109 + 5.718479 + 5.821049 + 6.001759 + 6.001759 + 5.901629 + 5.557309 + 5.173919 + 4.800289 + 4.431549 + 4.194679 + 4.006639 + 3.850349 + 3.747789 + 3.642779 + 3.591499 + 3.569519 + 3.528009 + 3.537779 + 3.554869 + 3.493819 + 3.447419 + 3.440099 + 3.408349 + 3.410789 + 3.452309 + 3.681849 + 4.060369 + 4.441319 + 4.854019 + 5.154379 + 5.425439 + 5.596379 + 5.586619 + 5.354629 + 5.027399 + 4.863779 + 4.761219 + 4.570739 + 4.368059 + 4.397359 + 4.573189 + 4.841809 + 5.203219 + 5.452309 + 5.652549 + 5.855239 + 5.906519 + 5.952919 + 5.828369 + 5.791739 + 5.799069 + 5.813719 + 5.877209 + 5.955359 + 5.781979 + 5.518239 + 5.127519 + 4.763659 + 4.492599 + 4.233749 + 4.011519 + 3.855239 + 3.691619 + 3.635459 + 3.818609 + 4.155599 + 4.590279 + 4.988329 + 5.076239 + 4.907739 + 4.648889 + 4.377829 + 4.216649 + 4.287469 + 4.590279 + 4.846689 + 5.139729 + 5.388809 + 5.689179 + 5.884539 + 6.043269 + 6.170259 + 6.211769 + 6.250839 + 6.209329 + 6.013969 + 5.701389 + 5.469399 + 5.479169 + 5.557309 + 5.728249 + 5.882099 + 5.984659 + 5.901629 + 5.581729 + 5.371719 + 5.418119 + 5.510909 + 5.667199 + 5.791739 + 5.698949 + 5.484049 + 5.154379 + 4.980999 + 5.061589 + 5.195899 + 5.359509 + 5.615919 + 5.762439 + 5.857679 + 5.948029 + 5.835699 + 5.706269 + 5.498699 + 5.188569 + 5.117749 + 5.191009 + 5.315549 + 5.532889 + 5.444979 + 5.396139 + 5.274039 + 5.027399 + 4.744129 + 4.668419 + 4.651329 + 4.514579 + 4.267939 + 4.260609 + 4.263049 + 4.189789 + 4.277699 + 4.600049 + 4.932159 + 5.283809 + 5.528009 + 5.740459 + 5.874769 + 5.955359 + 5.991989 + 5.845469 + 5.528009 + 5.061589 + 4.734359 + 4.534109 + 4.534109 + 4.697729 + 4.744129 + 4.619579 + 4.643999 + 4.832039 + 5.132399 + 5.410789 + 5.625689 + 5.603709 + 5.315549 + 4.961459 + 4.619579 + 4.358289 + 4.155599 + 4.033499 + 3.886979 + 3.772209 + 3.640339 + 3.532889 + 3.435209 + 3.427889 + 3.422999 + 3.398579 + 3.603709 + 4.023729 + 4.451089 + 4.792969 + 4.902859 + 4.780759 + 4.590279 + 4.336309 + 4.145839 + 4.216649 + 4.433989 + 4.714819 + 5.098219 + 5.359509 + 5.569519 + 5.772209 + 5.921169 + 6.055479 + 5.962679 + 5.642779 + 5.435209 + 5.388809 + 5.537779 + 5.681849 + 5.701389 + 5.615919 + 5.667199 + 5.740459 + 5.803949 + 5.882099 + 5.950469 + 6.072579 + 6.148279 + 6.116529 + 6.177579 + 6.201999 + 6.206889 + 5.991989 + 5.564639 + 5.178799 + 4.998089 + 5.051819 + 5.232529 + 5.484049 + 5.686739 + 5.899189 + 5.869889 + 5.977339 + 6.053039 + 6.079899 + 6.128739 + 6.079899 + 6.167809 + 6.194679 + 6.236189 + 6.053039 + 5.652549 + 5.274039 + 4.858899 + 4.534109 + 4.455969 + 4.619579 + 4.866229 + 5.117749 + 5.166589 + 5.056699 + 5.002979 + 5.098219 + 5.325319 + 5.567079 + 5.466959 + 5.252059 + 4.946809 + 4.880879 + 4.980999 + 5.225199 + 5.459629 + 5.723369 + 5.791739 + 5.906519 + 5.991989 + 5.835699 + 5.528009 + 5.142169 + 4.775869 + 4.490159 + 4.236189 + 4.023729 + 3.886979 + 3.752669 + 3.681849 + 3.806399 + 4.145839 + 4.600049 + 5.002979 + 5.303339 + 5.552429 + 5.615919 + 5.523119 + 5.611039 + 5.713599 + 5.845469 + 5.899189 + 5.994429 + 6.092109 + 6.092109 + 6.143389 + 6.153159 + 6.233749 + 6.187349 + 6.013969 + 5.835699 + 5.774649 + 5.686739 + 5.537779 + 5.327759 + 5.054259 + 4.700169 + 4.394919 + 4.180019 + 4.043269 + 3.877209 + 3.752669 + 3.728249 + 3.869889 + 4.206889 + 4.355849 + 4.426669 + 4.453529 + 4.521899 + 4.392479 + 4.155599 + 3.965129 + 3.877209 + 3.970009 + 4.258169 + 4.421779 + 4.336309 + 4.299679 + 4.392479 + 4.675749 + 4.761219 + 4.658659 + 4.490159 + 4.307009 + 4.126299 + 3.972449 + 4.077459 + 4.372939 + 4.741679 + 5.088449 + 5.186129 + 5.037169 + 4.785639 + 4.563419 + 4.534109 + 4.705049 + 4.741679 + 4.648889 + 4.431549 + 4.238629 + 4.065249 + 3.943149 + 3.811279 + 3.691619 + 3.652549 + 3.825929 + 4.223979 + 4.424219 + 4.429109 + 4.319219 + 4.138509 + 3.965129 + 3.886979 + 3.801509 + 3.701389 + 3.640339 + 3.767319 + 4.150719 + 4.648889 + 4.990769 + 5.088449 + 5.022509 + 4.783199 + 4.685519 + 4.665979 + 4.707499 + 4.912619 + 5.195899 + 5.415679 + 5.623249 + 5.740459 + 5.899189 + 5.928499 + 6.050599 + 6.153159 + 5.965129 + 5.586619 + 5.381489 + 5.371719 + 5.486489 + 5.567079 + 5.821049 + 5.913839 + 5.994429 + 6.011519 + 5.999309 + 6.018849 + 5.821049 + 5.728249 + 5.740459 + 5.764879 + 5.882099 + 5.926049 + 5.750229 + 5.415679 + 4.995649 + 4.861339 + 4.902859 + 5.103099 + 5.364389 + 5.596379 + 5.752669 + 5.845469 + 5.928499 + 6.006639 + 5.840579 + 5.518239 + 5.173919 + 4.739239 + 4.458409 + 4.426669 + 4.602489 + 4.822269 + 5.183689 + 5.430329 + 5.652549 + 5.821049 + 5.706269 + 5.369279 + 5.027399 + 4.705049 + 4.414459 + 4.145839 + 3.965129 + 4.033499 + 4.372939 + 4.683079 +]; + +dat = iddata (Y, U) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cde...@us...> - 2012-03-07 08:05:19
|
Revision: 9759 http://octave.svn.sourceforge.net/octave/?rev=9759&view=rev Author: cdemills Date: 2012-03-07 08:05:08 +0000 (Wed, 07 Mar 2012) Log Message: ----------- Search for trigger in the two first fields, if any Modified Paths: -------------- trunk/octave-forge/extra/dataframe/inst/@dataframe/dataframe.m Modified: trunk/octave-forge/extra/dataframe/inst/@dataframe/dataframe.m =================================================================== --- trunk/octave-forge/extra/dataframe/inst/@dataframe/dataframe.m 2012-03-07 08:04:20 UTC (rev 9758) +++ trunk/octave-forge/extra/dataframe/inst/@dataframe/dataframe.m 2012-03-07 08:05:08 UTC (rev 9759) @@ -233,9 +233,15 @@ if (all (cellfun ('size', dummy, 2) == 0)) continue; endif - if (strcmp (dummy{1}, trigger)) + if (size (dummy, 2) >= 1 && ... + ~isempty (regexp (dummy{1}, trigger, 'match'))) break; endif + if (size (dummy, 2) >= 2 && ... + ~isempty (regexp (dummy{2}, trigger, 'match'))) + %#was (strcmp (dummy{1}, trigger)) + break; + endif endwhile endif x = cell (1+length (lines)-indl, size(dummy, 2)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cde...@us...> - 2012-03-07 08:04:26
|
Revision: 9758 http://octave.svn.sourceforge.net/octave/?rev=9758&view=rev Author: cdemills Date: 2012-03-07 08:04:20 +0000 (Wed, 07 Mar 2012) Log Message: ----------- Deduce column names when there are only separated by spaces Modified Paths: -------------- trunk/octave-forge/extra/dataframe/inst/@dataframe/private/df_matassign.m Modified: trunk/octave-forge/extra/dataframe/inst/@dataframe/private/df_matassign.m =================================================================== --- trunk/octave-forge/extra/dataframe/inst/@dataframe/private/df_matassign.m 2012-03-06 16:08:10 UTC (rev 9757) +++ trunk/octave-forge/extra/dataframe/inst/@dataframe/private/df_matassign.m 2012-03-07 08:04:20 UTC (rev 9758) @@ -165,8 +165,12 @@ && ~all (df._over{2}(indc))) warning ("Trying to overwrite colum names"); endif - - ctype = RHS(1, :); RHS = RHS(2:end, :); + + if (sum (~cellfun ('isempty', RHS(1, indc))) == ncol) + ctype = RHS(1, :); + endif + + RHS = RHS(2:end, :); if (~indr_was_set) nrow = nrow - 1; indr = 1:nrow; endif @@ -244,7 +248,7 @@ df = df_pad (df, 1, max (indr)-df._cnt(1), rname_width); endif endif - + if (iscell(RHS)) %# we must pad on a column-by-column basis %# verify that each cell contains a non-empty vector, and that sizes %# are compatible @@ -268,6 +272,28 @@ keyboard endif + %# try to detect and remove bottom garbage + eff_len = zeros(nrow, 1); + for indi = (indr) + eff_len(indi, 1) = sum (~cellfun ('isempty', RHS(indi, :))); + endfor + indi = nrow; + while (indi > 0) + if (1 == eff_len(indi)) + nrow = nrow - 1; + indr(end) = []; + RHS(end, :) = []; + indi = indi - 1; + if (~indr_was_set && isempty (df._name{1, 1})) + df._cnt(1) = nrow; + df._ridx(end) = []; + endif + else + break; + endif + endwhile + clear eff_len; + %# the real assignement if (1 == size (RHS, 1)) %# each cell contains one vector fillfunc = @(x) RHS{x}; @@ -275,8 +301,8 @@ else %# use cell2mat to pad on a column-by-column basis fillfunc = @(x) cell2mat (RHS(:, x)); endif - - indj = 1; + + indj = 1; for indi = (1:ncol) if (indc(indi) > df._cnt(2)) %# perform dynamic resizing one-by-one, to get type right @@ -492,7 +518,18 @@ try df._name{2}(indc, 1) = genvarname (cname); catch - disp('line 472 '); keyboard + %# there was a problem with genvarname. + dummy = sum (~cellfun ('isempty', cname)); + if (1 == dummy) + dummy = strsplit(cname{1}, ' ', true); + if (length (dummy) == ncol) + df._name{2}(indc, 1) = dummy; + else + disp('line 528 '); keyboard + endif + else + disp('line 531 '); keyboard + endif end_try_catch df._over{2}(1, indc) = false; endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-03-06 16:08:19
|
Revision: 9757 http://octave.svn.sourceforge.net/octave/?rev=9757&view=rev Author: paramaniac Date: 2012-03-06 16:08:10 +0000 (Tue, 06 Mar 2012) Log Message: ----------- control: remove completed task from projects file Modified Paths: -------------- trunk/octave-forge/main/control/devel/PROJECTS Modified: trunk/octave-forge/main/control/devel/PROJECTS =================================================================== --- trunk/octave-forge/main/control/devel/PROJECTS 2012-03-06 16:01:07 UTC (rev 9756) +++ trunk/octave-forge/main/control/devel/PROJECTS 2012-03-06 16:08:10 UTC (rev 9757) @@ -26,13 +26,11 @@ * Implement zpk models and @zpset similar to @tfpoly. - * SLICOT model and controller reduction. Under construction in extra/control-devel. - * SLICOT system identification. Under construction in extra/control-devel * Descriptor support for pole placement command "place". - * Implement mu-Synthesis command "dksyn". + * Implement mu-Synthesis command "dksyn" using muHopt.f. * Implement d2d. In general, d2c followed by c2d could be used, maybe one derives direct formulae for the bilinear case. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-03-06 16:01:18
|
Revision: 9756 http://octave.svn.sourceforge.net/octave/?rev=9756&view=rev Author: paramaniac Date: 2012-03-06 16:01:07 +0000 (Tue, 06 Mar 2012) Log Message: ----------- control: add missing semicolon Modified Paths: -------------- trunk/octave-forge/main/control/inst/cfconred.m Modified: trunk/octave-forge/main/control/inst/cfconred.m =================================================================== --- trunk/octave-forge/main/control/inst/cfconred.m 2012-03-06 15:52:10 UTC (rev 9755) +++ trunk/octave-forge/main/control/inst/cfconred.m 2012-03-06 16:01:07 UTC (rev 9756) @@ -197,7 +197,7 @@ tol2 = 0.0; jobcf = 0; jobmr = 2; # balancing-free BTA - equil = scaled # equil: 0 means "S", 1 means "N" + equil = scaled; # equil: 0 means "S", 1 means "N" ordsel = 1; ncr = 0; negfb = true; # A-BK, A-LC Hurwitz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-03-06 15:52:19
|
Revision: 9755 http://octave.svn.sourceforge.net/octave/?rev=9755&view=rev Author: paramaniac Date: 2012-03-06 15:52:10 +0000 (Tue, 06 Mar 2012) Log Message: ----------- control: fix bug with scaling option Modified Paths: -------------- trunk/octave-forge/main/control/inst/cfconred.m trunk/octave-forge/main/control/inst/fwcfconred.m Modified: trunk/octave-forge/main/control/inst/cfconred.m =================================================================== --- trunk/octave-forge/main/control/inst/cfconred.m 2012-03-06 13:49:13 UTC (rev 9754) +++ trunk/octave-forge/main/control/inst/cfconred.m 2012-03-06 15:52:10 UTC (rev 9755) @@ -197,7 +197,7 @@ tol2 = 0.0; jobcf = 0; jobmr = 2; # balancing-free BTA - equil = scaled && scaledc; + equil = scaled # equil: 0 means "S", 1 means "N" ordsel = 1; ncr = 0; negfb = true; # A-BK, A-LC Hurwitz Modified: trunk/octave-forge/main/control/inst/fwcfconred.m =================================================================== --- trunk/octave-forge/main/control/inst/fwcfconred.m 2012-03-06 13:49:13 UTC (rev 9754) +++ trunk/octave-forge/main/control/inst/fwcfconred.m 2012-03-06 15:52:10 UTC (rev 9755) @@ -151,7 +151,7 @@ error ("fwcfconred: keys and values must come in pairs"); endif - [a, b, c, d, tsam, scaled] = ssdata (G); + [a, b, c, d, tsam] = ssdata (G); [p, m] = size (G); n = rows (a); [mf, nf] = size (F); @@ -173,7 +173,6 @@ tol1 = 0.0; jobcf = 1; jobmr = 1; # balancing-free BTA - equil = scaled && scaledc; ordsel = 1; ncr = 0; negfb = true; # A-BK, A-LC Hurwitz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-03-06 13:49:22
|
Revision: 9754 http://octave.svn.sourceforge.net/octave/?rev=9754&view=rev Author: paramaniac Date: 2012-03-06 13:49:13 +0000 (Tue, 06 Mar 2012) Log Message: ----------- control: prepare release of control-2.3.50 Modified Paths: -------------- trunk/octave-forge/main/control/DESCRIPTION trunk/octave-forge/main/control/INDEX trunk/octave-forge/main/control/NEWS trunk/octave-forge/main/control/devel/RELEASE_PACKAGE trunk/octave-forge/main/control/doc/control.pdf Modified: trunk/octave-forge/main/control/DESCRIPTION =================================================================== --- trunk/octave-forge/main/control/DESCRIPTION 2012-03-06 08:38:16 UTC (rev 9753) +++ trunk/octave-forge/main/control/DESCRIPTION 2012-03-06 13:49:13 UTC (rev 9754) @@ -1,6 +1,6 @@ Name: Control -Version: 2.3.49 -Date: 2012-02-26 +Version: 2.3.50 +Date: 2012-03-06 Author: Lukas Reichlin <luk...@gm...> Maintainer: Lukas Reichlin <luk...@gm...> Title: Control Systems Modified: trunk/octave-forge/main/control/INDEX =================================================================== --- trunk/octave-forge/main/control/INDEX 2012-03-06 08:38:16 UTC (rev 9753) +++ trunk/octave-forge/main/control/INDEX 2012-03-06 13:49:13 UTC (rev 9754) @@ -82,6 +82,7 @@ lqr Robust Control augw + fitfrd h2syn hinfsyn mixsyn @@ -103,8 +104,6 @@ cfconred fwcfconred spaconred -System Identification - fitfrd Overloaded Operators @lti/horzcat @lti/inv Modified: trunk/octave-forge/main/control/NEWS =================================================================== --- trunk/octave-forge/main/control/NEWS 2012-03-06 08:38:16 UTC (rev 9753) +++ trunk/octave-forge/main/control/NEWS 2012-03-06 13:49:13 UTC (rev 9754) @@ -1,7 +1,7 @@ Summary of important user-visible changes for releases of the control package =============================================================================== -control-2.3.50 Release Date: 2012-xx-yy Release Manager: Lukas Reichlin +control-2.3.50 Release Date: 2012-03-06 Release Manager: Lukas Reichlin =============================================================================== ** Added new functions for frequency-weighted model and controller order @@ -12,24 +12,35 @@ hnamodred fwcfconred spamodred spaconred +** Anderson, Madievski + -- Added two examples for controller reduction. The m-files are named after + the authors of the corresponding papers. + +** fitfrd + -- Added function to fit frequency response data with a state-space model. + +** set + -- The set command doesn't need a return argument anymore in order to save + the modified values. set (sys, "key", value) is now equivalent to + sys = set (sys, "key", value). + ** Require Octave version 3.6.0 or better. (The frequency response plotting commands have been simplified. They now use the fixed "axis tight" command. This is a first step towards multiple systems in one plot, e.g. bode (sys1, sys2, sys3). Furthermore, the code takes advantage of the new "arrayfun" function which became a faster oct-file instead of an m-file) -** set - -- The set command doesn't need a return argument anymore in order to save - the modified values. set (sys, "key", value) is now equivalent to - sys = set (sys, "key", value). - -** Revised package installation. The new solution compiles the SLICOT library - in a less barbaric way and creates only a single oct-file containing all the - SLICOT routines. This also brings along faster compile times. +** Revised package installation and cleanup efforts under the hood. + The new solution compiles the SLICOT library in a less barbaric way and + creates only a single oct-file containing all the SLICOT routines. + This also brings along faster compile times. (Special thanks to Hans Buchmann, Carlo De Falco and Michael Goffioul for their advice) +** doc/control.pdf + -- Extended PDF manual. + =============================================================================== control-2.2.5 Release Date: 2012-02-09 Release Manager: Lukas Reichlin =============================================================================== Modified: trunk/octave-forge/main/control/devel/RELEASE_PACKAGE =================================================================== --- trunk/octave-forge/main/control/devel/RELEASE_PACKAGE 2012-03-06 08:38:16 UTC (rev 9753) +++ trunk/octave-forge/main/control/devel/RELEASE_PACKAGE 2012-03-06 13:49:13 UTC (rev 9754) @@ -20,12 +20,12 @@ rm -R ~/octave/__TEMP__/control/devel cd ~/octave/__TEMP__ grep -i version control/DESCRIPTION -tar czf control-2.2.5.tar.gz control/ -md5 control-2.2.5.tar.gz -md5 control-2.2.5.tar.gz > md5_control_pkg.txt -uuencode control-2.2.5.tar.gz < control-2.2.5.tar.gz > control-2.2.5.tar.gz.uue +tar czf control-2.3.50.tar.gz control/ +md5 control-2.3.50.tar.gz +md5 control-2.3.50.tar.gz > md5_control_pkg.txt +uuencode control-2.3.50.tar.gz < control-2.3.50.tar.gz > control-2.3.50.tar.gz.uue octave -q --eval \ -"pkg install control-2.2.5.tar.gz" +"pkg install control-2.3.50.tar.gz" octave -q --eval \ "pkg load generate_html; generate_package_html ('control', 'control-html', 'octave-forge')" tar czf control-html.tar.gz control-html @@ -40,7 +40,7 @@ ===================================================================================== rm -R ~/octave/__TEMP__ -rm -R ~/octave/control-2.2.5 +rm -R ~/octave/control-2.3.50 ===================================================================================== Modified: trunk/octave-forge/main/control/doc/control.pdf =================================================================== --- trunk/octave-forge/main/control/doc/control.pdf 2012-03-06 08:38:16 UTC (rev 9753) +++ trunk/octave-forge/main/control/doc/control.pdf 2012-03-06 13:49:13 UTC (rev 9754) @@ -42,8 +42,7 @@ >> stream xڅ\x90MK1\x86\xEF\xFB+rL3\x99\xCC&\xB9*\xB6 \xE2Gݞ\xC4ònk\xE9n\xAB\xE0\xBF7i\/\x8A\xC3̛y\x9F\xBC(L:(\xBC>\xF2\xA2\xDBV\xE6\xD4\x96\xA2\xB3i\x85_:\xC7\xEC(\xD5\xCA\xF4\xA8\xD3H\xDD?Kur\x8Eb\x9E7\xD5\xD9ij\xB0j,\x9AEƫ -\x817A4\xCF\xE2Qv\xFB\x9D"\x94\xC7a\xBFQ\x9A<KX=5W\xD5eS\xBD~oN\xEF82x -#\xC1\x96\xB0\xD2\xEA\xA1\x8B\xEA\xBE824M\xC4\xECH\x96\xA0\xC6(88@\xEF\x8B\xEDE\xB2\xB5a\xB4%\x92\x87c\xBFU\xE5\xA14\xEE\xF2\xBC\xED\xF2\xBDV̲]\xF6e\xB0\xD8\xA5\x98\xDE\xCCs\xE1\xE4mwl\xB3\xEE=_}f?\xFD\x90\xABmfЖ\xF1\xA1]m\x81\xB8~[\xAB\xDA\xCA6;z''P\x98\xF5c\xD5)\xB2\xF2e\xB3\xDA\xFD\x86\x8F`D\x81#\x8DQ|-s[ +\x817A4\xCF\xE2Qv\xFB\x9D"\x94\xC7a\xBFQ\x9A<K\xC9Ϩ\xA7檺l\xAA\xD7\xEF\xD5\xE9!GOaD\xC9W\xDA=\xF4bQ\xDDKf\x81\xA2\x89\x98-\xC9\xD4\xE8}\xF1\xBDH\xBE6\x8C\xBED\xF2\xE1\xE3p\xEC\xB7J\xA3<\x94\xC6]\x9E\xB7]\xBEY\xB6˾\xFB\xA1ӛy.\x9C\xBC\xED\x8Emֽ\xE7\xAB\xCF\xEC\xA7o\xA3r\xB5\xCD\xDA2\x9E \xB4\x8B\xA2-\xD7okU[\xD9fG\xEF\xE4J\xB3>c\xAC:EV\xBElV\xBB_\xC3\xF0\xEC\x8F(b\xA41\x8AO\x94\xC6s\x8C endstream endobj 14 0 obj << @@ -61,188 +60,193 @@ endstream endobj 19 0 obj << -/Length 2032 +/Length 2069 /Filter /FlateDecode >> stream -xڭXKs\xDC6\xBE\xEBW̑\xAA2i\xBE\xC0GN+o\xADbm)v\xCAR\x92C\xB2\x88\xC4\xCC`\x92\x80\xD4D\xF9\xF5\xE9F\x8EL9N*\xA5*h4\x80~~ݘd\xC3_\xB2)\xD3MYeQ\x95\x95\x9B\xA6\xBB\x88-U\xEF64\xF8\xF4\xEDE\xE2\xF8r\x96E,\xCF`\xFCE\xB6\x90\xA5\xCC\xF2\x85\x8BS\xDF\xDD_\xBC\xBD.\xD9&)\xA34a\xF9\xE6~k\xAFM\x8B(\xC6Y\xBB\xF99\xF8^\x8B-o\xC4\xE5\xFF\xEE\xFF\xFB\xF6\x9Ak\xD5q\x9D k\xBC \xD3*\x8Ak\xC7y\xBF?q\xD5Q]\xA42\xA5)\\x86\xD2Y\x9Eo?\xFC\xB0v\Xťg\xFA،\xFC2\xAD\x82'\xFC'.ìL\x82f\xE8q6\xEAA\xE1\xC0$<^2\xF0\x9D\xE3\xDA\xEA\xA1\xC3Q\x8C{\xCB@h#a\x9F%\xA4\xC4A\xC7q\x95\xEB\xD6\xD0Mݤ\xB4W -\x87\xCB-\xED|\xC0\x8D\xCF4\xBE\x9D\xE8^\xB7\xE5:"\xF2'!\xADP{%{Ts\xE6uT\xE4\x9B0ɢ\x84%\xA4\xEF\xE1\xC0<\xCBi\xF0\x9B܈\x96\x86(,.\x8D`JK8\xE8\xE1d\x89\xDE19\xB9\xFA\xD0\x93n\xA7\x92\x9A\xEB\xE75d\xE0\xCE4\xF1ֽ\xBB\xBD\xF9\xF7\xC7\xFB5/de\x94\xE7\x9Dʜ\x81W\xBD\x9C\xBD8\x92t\x9F\x99W\x89\xB4"?\x89\xBE\xF5Jq\xB7\xC2\xC9$i \xF1\x9A\x9E\xDBD\x8B\x83\x82 \xEBmk\xC6q\xB04 -\xBE\x93(\x8E\x92\x84\xE8\xB3G`|\xE2\xA6u\xDC5\xC38\x8A\xD69\xF82 ZZ?\xC0z\xCEU4\xB7^\xC0 -V=\xA4\x98qj\xDD\xFD&"\xC9oFCL\x97\xBDJ\xF0q\xD2\xC2\xED\xE1Z|C\x96//,YEu\xCE@\xC5"J\xB2\x9AT\xFC%N\xCA5\xA3'iT |
From: <jpi...@us...> - 2012-03-06 08:38:27
|
Revision: 9753 http://octave.svn.sourceforge.net/octave/?rev=9753&view=rev Author: jpicarbajal Date: 2012-03-06 08:38:16 +0000 (Tue, 06 Mar 2012) Log Message: ----------- geometry: fixing docs Modified Paths: -------------- trunk/octave-forge/main/geometry/inst/io/data2geo.m Modified: trunk/octave-forge/main/geometry/inst/io/data2geo.m =================================================================== --- trunk/octave-forge/main/geometry/inst/io/data2geo.m 2012-03-06 08:34:45 UTC (rev 9752) +++ trunk/octave-forge/main/geometry/inst/io/data2geo.m 2012-03-06 08:38:16 UTC (rev 9753) @@ -107,6 +107,6 @@ %! %! % -------------------------------------------------------------------------- %! % We load the drawing6.svg file into Octave and transform it into a polygon. -%! % Then we create a temporary fiel where the .geo mesh will be written. -%! % If the packages msh and fplare available, a mesh is created from the .geo +%! % Then we create a temporary file where the .geo mesh will be written. +%! % If the packages msh and fpl are available, a mesh is created from the .geo %! % file. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jpi...@us...> - 2012-03-06 08:34:52
|
Revision: 9752 http://octave.svn.sourceforge.net/octave/?rev=9752&view=rev Author: jpicarbajal Date: 2012-03-06 08:34:45 +0000 (Tue, 06 Mar 2012) Log Message: ----------- geometry: fixing docs Modified Paths: -------------- trunk/octave-forge/main/geometry/inst/polygons2d/polygons2d.m Added Paths: ----------- trunk/octave-forge/main/geometry/inst/geom2d/geometry_Contents.m Removed Paths: ------------- trunk/octave-forge/main/geometry/inst/geom2d/Contents.m Deleted: trunk/octave-forge/main/geometry/inst/geom2d/Contents.m =================================================================== --- trunk/octave-forge/main/geometry/inst/geom2d/Contents.m 2012-03-05 21:45:14 UTC (rev 9751) +++ trunk/octave-forge/main/geometry/inst/geom2d/Contents.m 2012-03-06 08:34:45 UTC (rev 9752) @@ -1,224 +0,0 @@ -%% Copyright (c) 2011, INRA -%% 2007-2011, David Legland <dav...@gr...> -%% 2011 Adapted to Octave by Juan Pablo Carbajal <car...@if...> -%% -%% All rights reserved. -%% (simplified BSD License) -%% -%% Redistribution and use in source and binary forms, with or without -%% modification, are permitted provided that the following conditions are met: -%% -%% 1. Redistributions of source code must retain the above copyright notice, this -%% list of conditions and the following disclaimer. -%% -%% 2. Redistributions in binary form must reproduce the above copyright notice, -%% this list of conditions and the following disclaimer in the documentation -%% and/or other materials provided with the distribution. -%% -%% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -%% AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -%% IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -%% ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -%% LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -%% CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -%% SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -%% INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -%% CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -%% ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -%% POSSIBILITY OF SUCH DAMAGE. -%% -%% The views and conclusions contained in the software and documentation are -%% those of the authors and should not be interpreted as representing official -%% policies, either expressed or implied, of copyright holder. - -%% -*- texinfo -*- -%% @deftypefn {Function File} Contents () -%% Geometry 2D Toolbox -%% Version 1.2.0 21-Oct-2011 . -%% -%% Library to handle and visualize geometric primitives such as points, -%% lines, circles and ellipses, polygons... -%% -%% The goal is to provide a low-level library for manipulating geometrical -%% primitives, making easier the development of more complex geometric -%% algorithms. -%% -%% Most functions works for planar shapes, but some ones have been -%% extended to 3D or to any dimension. -%% -%% Points -%% points2d - Description of functions operating on points -%% clipPoints - Clip a set of points by a box -%% centroid - Compute centroid (center of mass) of a set of points -%% midPoint - Middle point of two points or of an edge -%% isCounterClockwise - Compute relative orientation of 3 points -%% polarPoint - Create a point from polar coordinates (rho + theta) -%% angle2Points - Compute horizontal angle between 2 points -%% angle3Points - Compute oriented angle made by 3 points -%% angleSort - Sort points in the plane according to their angle to origin -%% distancePoints - Compute distance between two points -%% minDistancePoints - Minimal distance between several points -%% transformPoint - Transform a point with an affine transform -%% drawPoint - Draw the point on the axis. -%% -%% Vectors -%% vectors2d - Description of functions operating on plane vectors -%% createVector - Create a vector from two points -%% vectorNorm - Compute norm of a vector, or of a set of vectors -%% vectorAngle - Angle of a vector, or between 2 vectors -%% normalizeVector - Normalize a vector to have norm equal to 1 -%% isPerpendicular - Check orthogonality of two vectors -%% isParallel - Check parallelism of two vectors -%% transformVector - Transform a vector with an affine transform -%% rotateVector - Rotate a vector by a given angle -%% -%% Straight lines -%% lines2d - Description of functions operating on planar lines -%% createLine - Create a straight line from 2 points, or from other inputs -%% medianLine - Create a median line between two points -%% cartesianLine - Create a straight line from cartesian equation coefficients -%% orthogonalLine - Create a line orthogonal to another one. -%% parallelLine - Create a line parallel to another one. -%% intersectLines - Return all intersection points of N lines in 2D -%% lineAngle - Computes angle between two straight lines -%% linePosition - Position of a point on a line -%% lineFit - Fit a straight line to a set of points -%% clipLine - Clip a line with a box -%% reverseLine - Return same line but with opposite orientation -%% transformLine - Transform a line with an affine transform -%% drawLine - Draw the line on the current axis -%% -%% Edges (line segments between 2 points) -%% edges2d - Description of functions operating on planar edges -%% createEdge - Create an edge between two points, or from a line -%% edgeToLine - Convert an edge to a straight line -%% edgeAngle - Return angle of edge -%% edgeLength - Return length of an edge -%% midPoint - Middle point of two points or of an edge -%% edgePosition - Return position of a point on an edge -%% clipEdge - Clip an edge with a rectangular box -%% reverseEdge - Intervert the source and target vertices of edge -%% intersectEdges - Return all intersections between two set of edges -%% intersectLineEdge - Return intersection between a line and an edge -%% transformEdge - Transform an edge with an affine transform -%% drawEdge - Draw an edge given by 2 points -%% drawCenteredEdge - Draw an edge centered on a point -%% -%% Rays -%% rays2d - Description of functions operating on planar rays -%% createRay - Create a ray (half-line), from various inputs -%% bisector - Return the bisector of two lines, or 3 points -%% clipRay - Clip a ray with a box -%% drawRay - Draw a ray on the current axis -%% -%% Relations between points and lines -%% distancePointEdge - Minimum distance between a point and an edge -%% distancePointLine - Minimum distance between a point and a line -%% projPointOnLine - Project of a point orthogonally onto a line -%% pointOnLine - Create a point on a line at a given position on the line -%% isPointOnLine - Test if a point belongs to a line -%% isPointOnEdge - Test if a point belongs to an edge -%% isPointOnRay - Test if a point belongs to a ray -%% isLeftOriented - Test if a point is on the left side of a line -%% -%% Circles -%% circles2d - Description of functions operating on circles -%% createCircle - Create a circle from 2 or 3 points -%% createDirectedCircle - Create a directed circle -%% intersectCircles - Intersection points of two circles -%% intersectLineCircle - Intersection point(s) of a line and a circle -%% circleAsPolygon - Convert a circle into a series of points -%% circleArcAsCurve - Convert a circle arc into a series of points -%% isPointInCircle - Test if a point is located inside a given circle -%% isPointOnCircle - Test if a point is located on a given circle. -%% enclosingCircle - Find the minimum circle enclosing a set of points. -%% radicalAxis - Compute the radical axis (or radical line) of 2 circles -%% drawCircle - Draw a circle on the current axis -%% drawCircleArc - Draw a circle arc on the current axis -%% -%% Ellipses -%% ellipses2d - Description of functions operating on ellipses -%% inertiaEllipse - Inertia ellipse of a set of points -%% isPointInEllipse - Check if a point is located inside a given ellipse -%% ellipseAsPolygon - Convert an ellipse into a series of points -%% drawEllipse - Draw an ellipse on the current axis -%% drawEllipseArc - Draw an ellipse arc on the current axis -%% -%% Geometric transforms -%% transforms2d - Description of functions operating on transforms -%% createTranslation - Create the 3*3 matrix of a translation -%% createRotation - Create the 3*3 matrix of a rotation -%% createScaling - Create the 3*3 matrix of a scaling in 2 dimensions -%% createHomothecy - Create the the 3x3 matrix of an homothetic transform -%% createBasisTransform - Compute matrix for transforming a basis into another basis -%% createLineReflection - Create the the 3x3 matrix of a line reflection -%% fitAffineTransform2d - Fit an affine transform using two point sets -%% -%% Angles -%% angles2d - Description of functions for manipulating angles -%% normalizeAngle - Normalize an angle value within a 2*PI interval -%% angleAbsDiff - Absolute difference between two angles -%% angleDiff - Difference between two angles -%% deg2rad - Convert angle from degrees to radians -%% rad2deg - Convert angle from radians to degrees -%% -%% Boxes -%% boxes2d - Description of functions operating on bounding boxes -%% intersectBoxes - Intersection of two bounding boxes -%% mergeBoxes - Merge two boxes, by computing their greatest extent -%% randomPointInBox - Generate random point within a box -%% drawBox - Draw a box defined by coordinate extents -%% -%% Various drawing functions -%% drawBezierCurve - Draw a cubic bezier curve defined by 4 control points -%% drawParabola - Draw a parabola on the current axis -%% drawOrientedBox - Draw centered oriented rectangle -%% drawRect - Draw rectangle on the current axis -%% drawArrow - Draw an arrow on the current axis -%% drawLabels - Draw labels at specified positions -%% drawShape - Draw various types of shapes (circles, polygons...) -%% -%% Other shapes -%% squareGrid - Generate equally spaces points in plane. -%% hexagonalGrid - Generate hexagonal grid of points in the plane. -%% triangleGrid - Generate triangular grid of points in the plane. -%% crackPattern - Create a (bounded) crack pattern tessellation -%% crackPattern2 - Create a (bounded) crack pattern tessellation -%% -%% -%% Credits: -%% * function 'enclosingCircle' rewritten from a file from Yazan Ahed -%% , available on Matlab File Exchange -%% -%% @end deftypefn - -function Contents () - - help('Contents'); - - %% Deprecated functions - - % createMedian - create a median line - % minDistance - compute minimum distance between a point and a set of points - % homothecy - create a homothecy as an affine transform - % rotation - return 3*3 matrix of a rotation - % translation - return 3*3 matrix of a translation - % scaling - return 3*3 matrix of a scaling in 2 dimensions - % lineSymmetry - create line symmetry as 2D affine transform - % vecnorm - compute norm of vector or of set of vectors - % normalize - normalize a vector - % onCircle - test if a point is located on a given circle. - % inCircle - test if a point is located inside a given circle. - % onEdge - test if a point belongs to an edge - % onLine - test if a point belongs to a line - % onRay - test if a point belongs to a ray - % invertLine - return same line but with opposite orientation - % clipLineRect - clip a line with a polygon - % formatAngle - Ensure an angle value is comprised between 0 and 2*PI - - - %% Others... - % drawRect2 - Draw centered rectangle on the current axis - -endfunction - Copied: trunk/octave-forge/main/geometry/inst/geom2d/geometry_Contents.m (from rev 9751, trunk/octave-forge/main/geometry/inst/geom2d/Contents.m) =================================================================== --- trunk/octave-forge/main/geometry/inst/geom2d/geometry_Contents.m (rev 0) +++ trunk/octave-forge/main/geometry/inst/geom2d/geometry_Contents.m 2012-03-06 08:34:45 UTC (rev 9752) @@ -0,0 +1,224 @@ +%% Copyright (c) 2011, INRA +%% 2007-2011, David Legland <dav...@gr...> +%% 2011 Adapted to Octave by Juan Pablo Carbajal <car...@if...> +%% +%% All rights reserved. +%% (simplified BSD License) +%% +%% Redistribution and use in source and binary forms, with or without +%% modification, are permitted provided that the following conditions are met: +%% +%% 1. Redistributions of source code must retain the above copyright notice, this +%% list of conditions and the following disclaimer. +%% +%% 2. Redistributions in binary form must reproduce the above copyright notice, +%% this list of conditions and the following disclaimer in the documentation +%% and/or other materials provided with the distribution. +%% +%% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +%% AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +%% IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +%% ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +%% LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +%% CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +%% SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +%% INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +%% CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +%% ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +%% POSSIBILITY OF SUCH DAMAGE. +%% +%% The views and conclusions contained in the software and documentation are +%% those of the authors and should not be interpreted as representing official +%% policies, either expressed or implied, of copyright holder. + +%% -*- texinfo -*- +%% @deftypefn {Function File} Contents () +%% Geometry 2D Toolbox +%% Version 1.2.0 21-Oct-2011 . +%% +%% Library to handle and visualize geometric primitives such as points, +%% lines, circles and ellipses, polygons... +%% +%% The goal is to provide a low-level library for manipulating geometrical +%% primitives, making easier the development of more complex geometric +%% algorithms. +%% +%% Most functions works for planar shapes, but some ones have been +%% extended to 3D or to any dimension. +%% +%% Points +%% points2d - Description of functions operating on points +%% clipPoints - Clip a set of points by a box +%% centroid - Compute centroid (center of mass) of a set of points +%% midPoint - Middle point of two points or of an edge +%% isCounterClockwise - Compute relative orientation of 3 points +%% polarPoint - Create a point from polar coordinates (rho + theta) +%% angle2Points - Compute horizontal angle between 2 points +%% angle3Points - Compute oriented angle made by 3 points +%% angleSort - Sort points in the plane according to their angle to origin +%% distancePoints - Compute distance between two points +%% minDistancePoints - Minimal distance between several points +%% transformPoint - Transform a point with an affine transform +%% drawPoint - Draw the point on the axis. +%% +%% Vectors +%% vectors2d - Description of functions operating on plane vectors +%% createVector - Create a vector from two points +%% vectorNorm - Compute norm of a vector, or of a set of vectors +%% vectorAngle - Angle of a vector, or between 2 vectors +%% normalizeVector - Normalize a vector to have norm equal to 1 +%% isPerpendicular - Check orthogonality of two vectors +%% isParallel - Check parallelism of two vectors +%% transformVector - Transform a vector with an affine transform +%% rotateVector - Rotate a vector by a given angle +%% +%% Straight lines +%% lines2d - Description of functions operating on planar lines +%% createLine - Create a straight line from 2 points, or from other inputs +%% medianLine - Create a median line between two points +%% cartesianLine - Create a straight line from cartesian equation coefficients +%% orthogonalLine - Create a line orthogonal to another one. +%% parallelLine - Create a line parallel to another one. +%% intersectLines - Return all intersection points of N lines in 2D +%% lineAngle - Computes angle between two straight lines +%% linePosition - Position of a point on a line +%% lineFit - Fit a straight line to a set of points +%% clipLine - Clip a line with a box +%% reverseLine - Return same line but with opposite orientation +%% transformLine - Transform a line with an affine transform +%% drawLine - Draw the line on the current axis +%% +%% Edges (line segments between 2 points) +%% edges2d - Description of functions operating on planar edges +%% createEdge - Create an edge between two points, or from a line +%% edgeToLine - Convert an edge to a straight line +%% edgeAngle - Return angle of edge +%% edgeLength - Return length of an edge +%% midPoint - Middle point of two points or of an edge +%% edgePosition - Return position of a point on an edge +%% clipEdge - Clip an edge with a rectangular box +%% reverseEdge - Intervert the source and target vertices of edge +%% intersectEdges - Return all intersections between two set of edges +%% intersectLineEdge - Return intersection between a line and an edge +%% transformEdge - Transform an edge with an affine transform +%% drawEdge - Draw an edge given by 2 points +%% drawCenteredEdge - Draw an edge centered on a point +%% +%% Rays +%% rays2d - Description of functions operating on planar rays +%% createRay - Create a ray (half-line), from various inputs +%% bisector - Return the bisector of two lines, or 3 points +%% clipRay - Clip a ray with a box +%% drawRay - Draw a ray on the current axis +%% +%% Relations between points and lines +%% distancePointEdge - Minimum distance between a point and an edge +%% distancePointLine - Minimum distance between a point and a line +%% projPointOnLine - Project of a point orthogonally onto a line +%% pointOnLine - Create a point on a line at a given position on the line +%% isPointOnLine - Test if a point belongs to a line +%% isPointOnEdge - Test if a point belongs to an edge +%% isPointOnRay - Test if a point belongs to a ray +%% isLeftOriented - Test if a point is on the left side of a line +%% +%% Circles +%% circles2d - Description of functions operating on circles +%% createCircle - Create a circle from 2 or 3 points +%% createDirectedCircle - Create a directed circle +%% intersectCircles - Intersection points of two circles +%% intersectLineCircle - Intersection point(s) of a line and a circle +%% circleAsPolygon - Convert a circle into a series of points +%% circleArcAsCurve - Convert a circle arc into a series of points +%% isPointInCircle - Test if a point is located inside a given circle +%% isPointOnCircle - Test if a point is located on a given circle. +%% enclosingCircle - Find the minimum circle enclosing a set of points. +%% radicalAxis - Compute the radical axis (or radical line) of 2 circles +%% drawCircle - Draw a circle on the current axis +%% drawCircleArc - Draw a circle arc on the current axis +%% +%% Ellipses +%% ellipses2d - Description of functions operating on ellipses +%% inertiaEllipse - Inertia ellipse of a set of points +%% isPointInEllipse - Check if a point is located inside a given ellipse +%% ellipseAsPolygon - Convert an ellipse into a series of points +%% drawEllipse - Draw an ellipse on the current axis +%% drawEllipseArc - Draw an ellipse arc on the current axis +%% +%% Geometric transforms +%% transforms2d - Description of functions operating on transforms +%% createTranslation - Create the 3*3 matrix of a translation +%% createRotation - Create the 3*3 matrix of a rotation +%% createScaling - Create the 3*3 matrix of a scaling in 2 dimensions +%% createHomothecy - Create the the 3x3 matrix of an homothetic transform +%% createBasisTransform - Compute matrix for transforming a basis into another basis +%% createLineReflection - Create the the 3x3 matrix of a line reflection +%% fitAffineTransform2d - Fit an affine transform using two point sets +%% +%% Angles +%% angles2d - Description of functions for manipulating angles +%% normalizeAngle - Normalize an angle value within a 2*PI interval +%% angleAbsDiff - Absolute difference between two angles +%% angleDiff - Difference between two angles +%% deg2rad - Convert angle from degrees to radians +%% rad2deg - Convert angle from radians to degrees +%% +%% Boxes +%% boxes2d - Description of functions operating on bounding boxes +%% intersectBoxes - Intersection of two bounding boxes +%% mergeBoxes - Merge two boxes, by computing their greatest extent +%% randomPointInBox - Generate random point within a box +%% drawBox - Draw a box defined by coordinate extents +%% +%% Various drawing functions +%% drawBezierCurve - Draw a cubic bezier curve defined by 4 control points +%% drawParabola - Draw a parabola on the current axis +%% drawOrientedBox - Draw centered oriented rectangle +%% drawRect - Draw rectangle on the current axis +%% drawArrow - Draw an arrow on the current axis +%% drawLabels - Draw labels at specified positions +%% drawShape - Draw various types of shapes (circles, polygons...) +%% +%% Other shapes +%% squareGrid - Generate equally spaces points in plane. +%% hexagonalGrid - Generate hexagonal grid of points in the plane. +%% triangleGrid - Generate triangular grid of points in the plane. +%% crackPattern - Create a (bounded) crack pattern tessellation +%% crackPattern2 - Create a (bounded) crack pattern tessellation +%% +%% +%% Credits: +%% * function 'enclosingCircle' rewritten from a file from Yazan Ahed +%% , available on Matlab File Exchange +%% +%% @end deftypefn + +function Contents () + + help('Contents'); + + %% Deprecated functions + + % createMedian - create a median line + % minDistance - compute minimum distance between a point and a set of points + % homothecy - create a homothecy as an affine transform + % rotation - return 3*3 matrix of a rotation + % translation - return 3*3 matrix of a translation + % scaling - return 3*3 matrix of a scaling in 2 dimensions + % lineSymmetry - create line symmetry as 2D affine transform + % vecnorm - compute norm of vector or of set of vectors + % normalize - normalize a vector + % onCircle - test if a point is located on a given circle. + % inCircle - test if a point is located inside a given circle. + % onEdge - test if a point belongs to an edge + % onLine - test if a point belongs to a line + % onRay - test if a point belongs to a ray + % invertLine - return same line but with opposite orientation + % clipLineRect - clip a line with a polygon + % formatAngle - Ensure an angle value is comprised between 0 and 2*PI + + + %% Others... + % drawRect2 - Draw centered rectangle on the current axis + +endfunction + Modified: trunk/octave-forge/main/geometry/inst/polygons2d/polygons2d.m =================================================================== --- trunk/octave-forge/main/geometry/inst/polygons2d/polygons2d.m 2012-03-05 21:45:14 UTC (rev 9751) +++ trunk/octave-forge/main/geometry/inst/polygons2d/polygons2d.m 2012-03-06 08:34:45 UTC (rev 9752) @@ -33,7 +33,7 @@ %% -*- texinfo -*- %% @deftypefn {Function File} {} polygons2d () -%% MATGEOM-POLYGONS +%% Description of functions operating on 2D polygons %% %% The 'polygons' module contains functions operating on shapes composed %% of a vertex list, like polygons or polylines. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-03-05 21:45:20
|
Revision: 9751 http://octave.svn.sourceforge.net/octave/?rev=9751&view=rev Author: paramaniac Date: 2012-03-05 21:45:14 +0000 (Mon, 05 Mar 2012) Log Message: ----------- control: add two examples for controller reduction to the index file Modified Paths: -------------- trunk/octave-forge/main/control/INDEX Modified: trunk/octave-forge/main/control/INDEX =================================================================== --- trunk/octave-forge/main/control/INDEX 2012-03-05 21:38:35 UTC (rev 9750) +++ trunk/octave-forge/main/control/INDEX 2012-03-05 21:45:14 UTC (rev 9751) @@ -2,6 +2,8 @@ Examples MDSSystem optiPID + Anderson + Madievski Linear Time Invariant Models dss frd This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-03-05 21:38:41
|
Revision: 9750 http://octave.svn.sourceforge.net/octave/?rev=9750&view=rev Author: paramaniac Date: 2012-03-05 21:38:35 +0000 (Mon, 05 Mar 2012) Log Message: ----------- control: docfixes for order reduction functions Modified Paths: -------------- trunk/octave-forge/main/control/inst/bstmodred.m trunk/octave-forge/main/control/inst/btaconred.m trunk/octave-forge/main/control/inst/btamodred.m trunk/octave-forge/main/control/inst/cfconred.m trunk/octave-forge/main/control/inst/hnamodred.m trunk/octave-forge/main/control/inst/spaconred.m trunk/octave-forge/main/control/inst/spamodred.m Modified: trunk/octave-forge/main/control/inst/bstmodred.m =================================================================== --- trunk/octave-forge/main/control/inst/bstmodred.m 2012-03-05 18:46:32 UTC (rev 9749) +++ trunk/octave-forge/main/control/inst/bstmodred.m 2012-03-05 21:38:35 UTC (rev 9750) @@ -152,35 +152,16 @@ ## performed on system @var{G} prior to order reduction. ## Default value is true if @code{G.scaled == false} and ## false if @code{G.scaled == true}. +## Note that for @acronym{MIMO} models, proper scaling of both inputs and outputs +## is of utmost importance. The input and output scaling can @strong{not} +## be done by the equilibration option or the @command{prescale} command +## because these functions perform state transformations only. +## Furthermore, signals should not be scaled simply to a certain range. +## For all inputs (or outputs), a certain change should be of the same +## importance for the model. ## @end table ## ## -## For the H-infinity norm, the best approximation problem is -## unsolved so far. Nevertheless, balanced truncation and related -## methods can be used to obtain good approximations using this measure. -## -## Available approximation methods are the accuracy-enhancing square-root (SR) -## or the balancing-free square-root (BFSR) versions of -## the Balance & Truncate (BTA) or Singular Perturbation Approximation (SPA) -## model reduction methods for the ALPHA-stable part of the system. -## -## Unstable models are handled by separating the stable and unstable -## parts additively, applying the model reduction only to the stable -## part and by joining the reduced stable with the original unstable part. -## The order of the reduced system can be selected by the user or -## can be determined automatically on the basis of the computed -## Hankel singular values. -## -## For MIMO models, proper scaling of input-output channels is of -## utmost importance. This can @strong{not} be done by the equilibration -## option or the @command{prescale} command because these perform state -## transformations only. While enhancing numerics, state transformations -## have no influence on the input-output behaviour and the magnitude of -## the corresponding signals. Since the algorithm calculates the -## H-infinity norm of these signals, important behaviour of @var{G} -## could be neglected just because the corresponding signals have smaller -## numbers than those of other, less important effects of @var{G}. -## ## BST is often suitable to perform model reduction in order to obtain ## low order design models for controller synthesis. ## Modified: trunk/octave-forge/main/control/inst/btaconred.m =================================================================== --- trunk/octave-forge/main/control/inst/btaconred.m 2012-03-05 18:46:32 UTC (rev 9749) +++ trunk/octave-forge/main/control/inst/btaconred.m 2012-03-05 21:38:35 UTC (rev 9750) @@ -205,6 +205,13 @@ ## performed on @var{G} and @var{K} prior to order reduction. ## Default value is false if both @code{G.scaled == true, K.scaled == true} ## and true otherwise. +## Note that for @acronym{MIMO} models, proper scaling of both inputs and outputs +## is of utmost importance. The input and output scaling can @strong{not} +## be done by the equilibration option or the @command{prescale} command +## because these functions perform state transformations only. +## Furthermore, signals should not be scaled simply to a certain range. +## For all inputs (or outputs), a certain change should be of the same +## importance for the model. ## @end table ## ## @strong{Algorithm}@* Modified: trunk/octave-forge/main/control/inst/btamodred.m =================================================================== --- trunk/octave-forge/main/control/inst/btamodred.m 2012-03-05 18:46:32 UTC (rev 9749) +++ trunk/octave-forge/main/control/inst/btamodred.m 2012-03-05 21:38:35 UTC (rev 9750) @@ -183,22 +183,16 @@ ## This is done by state transformations. ## Default value is true if @code{G.scaled == false} and ## false if @code{G.scaled == true}. -## Note that for @acronym{MIMO} models,. -## @end table -## -## For @acronym{MIMO} models, proper scaling of both inputs and outputs +## Note that for @acronym{MIMO} models, proper scaling of both inputs and outputs ## is of utmost importance. The input and output scaling can @strong{not} ## be done by the equilibration option or the @command{prescale} command ## because these functions perform state transformations only. -## Signals should not be scaled simply to the range of, say, -1 to +1. -## For all inputs (or outputs), a change from +1 to +2 should be of the -## same importance for the model. -## Think of a chemical reactor, the importance could be the cost to control this -## reactor. Then a change on each input from +1.5 to +2.0 would cost 50$. -## Otherwise, important behaviour of @var{G} could be neglected just because -## the corresponding signals have smaller numbers than those of other, -## less important effects of @var{G}. +## Furthermore, signals should not be scaled simply to a certain range. +## For all inputs (or outputs), a certain change should be of the same +## importance for the model. +## @end table ## +## ## Approximation Properties: ## @itemize @bullet ## @item Modified: trunk/octave-forge/main/control/inst/cfconred.m =================================================================== --- trunk/octave-forge/main/control/inst/cfconred.m 2012-03-05 18:46:32 UTC (rev 9749) +++ trunk/octave-forge/main/control/inst/cfconred.m 2012-03-05 21:38:35 UTC (rev 9750) @@ -119,6 +119,13 @@ ## performed on system @var{G} prior to order reduction. ## Default value is true if @code{G.scaled == false} and ## false if @code{G.scaled == true}. +## Note that for @acronym{MIMO} models, proper scaling of both inputs and outputs +## is of utmost importance. The input and output scaling can @strong{not} +## be done by the equilibration option or the @command{prescale} command +## because these functions perform state transformations only. +## Furthermore, signals should not be scaled simply to a certain range. +## For all inputs (or outputs), a certain change should be of the same +## importance for the model. ## @end table ## ## @strong{Algorithm}@* Modified: trunk/octave-forge/main/control/inst/hnamodred.m =================================================================== --- trunk/octave-forge/main/control/inst/hnamodred.m 2012-03-05 18:46:32 UTC (rev 9749) +++ trunk/octave-forge/main/control/inst/hnamodred.m 2012-03-05 21:38:35 UTC (rev 9750) @@ -245,13 +245,16 @@ ## performed on system @var{G} prior to order reduction. ## Default value is true if @code{G.scaled == false} and ## false if @code{G.scaled == true}. +## Note that for @acronym{MIMO} models, proper scaling of both inputs and outputs +## is of utmost importance. The input and output scaling can @strong{not} +## be done by the equilibration option or the @command{prescale} command +## because these functions perform state transformations only. +## Furthermore, signals should not be scaled simply to a certain range. +## For all inputs (or outputs), a certain change should be of the same +## importance for the model. ## @end table ## ## -## UNSTABLE (from bstmodred) -## -## MIMO (from bstmodred) -## ## Approximation Properties: ## @itemize @bullet ## @item Modified: trunk/octave-forge/main/control/inst/spaconred.m =================================================================== --- trunk/octave-forge/main/control/inst/spaconred.m 2012-03-05 18:46:32 UTC (rev 9749) +++ trunk/octave-forge/main/control/inst/spaconred.m 2012-03-05 21:38:35 UTC (rev 9750) @@ -205,6 +205,13 @@ ## performed on @var{G} and @var{K} prior to order reduction. ## Default value is false if both @code{G.scaled == true, K.scaled == true} ## and true otherwise. +## Note that for @acronym{MIMO} models, proper scaling of both inputs and outputs +## is of utmost importance. The input and output scaling can @strong{not} +## be done by the equilibration option or the @command{prescale} command +## because these functions perform state transformations only. +## Furthermore, signals should not be scaled simply to a certain range. +## For all inputs (or outputs), a certain change should be of the same +## importance for the model. ## @end table ## ## @strong{Algorithm}@* Modified: trunk/octave-forge/main/control/inst/spamodred.m =================================================================== --- trunk/octave-forge/main/control/inst/spamodred.m 2012-03-05 18:46:32 UTC (rev 9749) +++ trunk/octave-forge/main/control/inst/spamodred.m 2012-03-05 21:38:35 UTC (rev 9750) @@ -182,6 +182,13 @@ ## performed on system @var{G} prior to order reduction. ## Default value is true if @code{G.scaled == false} and ## false if @code{G.scaled == true}. +## Note that for @acronym{MIMO} models, proper scaling of both inputs and outputs +## is of utmost importance. The input and output scaling can @strong{not} +## be done by the equilibration option or the @command{prescale} command +## because these functions perform state transformations only. +## Furthermore, signals should not be scaled simply to a certain range. +## For all inputs (or outputs), a certain change should be of the same +## importance for the model. ## @end table ## ## This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mic...@us...> - 2012-03-05 18:46:38
|
Revision: 9749 http://octave.svn.sourceforge.net/octave/?rev=9749&view=rev Author: michelemartone Date: 2012-03-05 18:46:32 +0000 (Mon, 05 Mar 2012) Log Message: ----------- sparsersb: interface to rsb_set_initopt_as_string; the sparsersbbench.m will print out the evaluated command before its speedup; doc update. Modified Paths: -------------- trunk/octave-forge/main/sparsersb/doc/sparsersb.txt trunk/octave-forge/main/sparsersb/src/sparsersb.cc trunk/octave-forge/main/sparsersb/src/sparsersbbench.m Modified: trunk/octave-forge/main/sparsersb/doc/sparsersb.txt =================================================================== --- trunk/octave-forge/main/sparsersb/doc/sparsersb.txt 2012-03-05 17:48:09 UTC (rev 9748) +++ trunk/octave-forge/main/sparsersb/doc/sparsersb.txt 2012-03-05 18:46:32 UTC (rev 9749) @@ -31,8 +31,18 @@ Uses `M = max (I)', `N = max (J)' -- Loadable Function: S = sparsersb (M, N) - Equivalent to `sparsersb ([], [], [], M, N, 0)' + If M and N are integers, equivalent to `sparsersb ([], [], [], M, + N, 0)' + -- Loadable Function: S = sparsersb ("set", OPN, OPV) + If OPN is a string representing a valid librsb option name and OPV + is a string representing a valid librsb option value, the + correspondent librsb option will be set. + + -- Loadable Function: S = sparsersb (A, S) + If A is a sparsersb matrix and S is a string, S will be + interpreted as a query string about matrix A. + Please note that on `sparsersb' type variables are available most, but not all of the operators available for `full' or `sparse' typed variables. Modified: trunk/octave-forge/main/sparsersb/src/sparsersb.cc =================================================================== --- trunk/octave-forge/main/sparsersb/src/sparsersb.cc 2012-03-05 17:48:09 UTC (rev 9748) +++ trunk/octave-forge/main/sparsersb/src/sparsersb.cc 2012-03-05 18:46:32 UTC (rev 9749) @@ -1525,6 +1525,9 @@ @deftypefnx {Loadable Function} {@var{s} =} "RSBOI_FNS" (@var{m}, @var{n})\n\ If @var{m} and @var{n} are integers, equivalent to @code{"RSBOI_FNS" ([], [], [], @var{m}, @var{n}, 0)}\n\ \n\ +@deftypefnx {Loadable Function} {@var{s} =} "RSBOI_FNS" (\"set\", @var{opn}, @var{opv})\n\ +If @var{opn} is a string representing a valid librsb option name and @var{opv} is a string representing a valid librsb option value, the correspondent librsb option will be set.\n\ +\n\ @deftypefnx {Loadable Function} {@var{s} =} "RSBOI_FNS" (@var{A}, @var{S})\n\ If @var{A} is a "RSBOI_FNS" matrix and @var{S} is a string, @var{S} will be interpreted as a query string about matrix @var{A}.\n\ \n"\ @@ -1557,16 +1560,25 @@ RSBOI_0_ERROR(RSBOI_0_NOCOERRMSG); #endif install_sparse_rsb(); - if (nargin == 1 || nargin == 2) + if( nargin == 3 && args(0).is_string() && args(0).string_value()=="set" && args(1).is_string() && args(2).is_string()) { + rsb_err_t errval=RSB_ERR_NO_ERROR; + const char *os=args(1).string_value().c_str(); + const char *ov=args(2).string_value().c_str(); + errval=rsb_set_initopt_as_string(os,ov); + /* FIXME: missing some diagnostic output */ + goto ret; + } + + if ( nargin == 1 || nargin == 2 ) + { rsb_type_t typecode=RSBOI_TYPECODE; - if (nargin >= 2)/* FIXME: this is wierd ! */ + if (nargin >= 2)/* FIXME: this is weird ! */ #if RSBOI_WANT_DOUBLE_COMPLEX typecode=RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX; #else RSBOI_0_ERROR(RSBOI_0_NOCOERRMSG); #endif - octave_stdout << "info?\n"; if (nargin == 2 && args(0).type_name()==RSB_OI_TYPEINFO_STRING && args(1).is_string()) { char ss[RSBOI_INFOBUF]; Modified: trunk/octave-forge/main/sparsersb/src/sparsersbbench.m =================================================================== --- trunk/octave-forge/main/sparsersb/src/sparsersbbench.m 2012-03-05 17:48:09 UTC (rev 9748) +++ trunk/octave-forge/main/sparsersb/src/sparsersbbench.m 2012-03-05 18:46:32 UTC (rev 9749) @@ -1,5 +1,6 @@ #!/usr/bin/octave -q # TODO: document this file's functions so they get installed and are properly usable. +# TODO: sprand should not be used in a consistent way function dt=sparsersbbench(precmd,cmd,postcmd,mint) # .. @@ -27,10 +28,12 @@ postdots=sprintf(";until ((dt=toc())>=%f);",mint); all=[gprecmd,dots,precmd,predots,cmd,postdots,postcmd,dots,gpostcmd]; # printf("will see speedup for %s\n",all); + printf("#%s #-> speedup is...",all); dtr=sparsersbbench([gprecmd,"", precmd,""], cmd,[ postcmd,":",gpostcmd],mint); dto=sparsersbbench([gprecmd,"",rprecmd,""],rcmd,[rpostcmd,":",gpostcmd],mint); speedup=dto/dtr; - printf("%.2f speedup for %s\n",speedup,all); + printf("%.2f\n",speedup); +# printf("%.2f speedup for %s\n",speedup,all); end function sparsersbbench_battery(mstring,mint) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-03-05 17:48:15
|
Revision: 9748 http://octave.svn.sourceforge.net/octave/?rev=9748&view=rev Author: paramaniac Date: 2012-03-05 17:48:09 +0000 (Mon, 05 Mar 2012) Log Message: ----------- control-devel: fix bug 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-05 17:32:53 UTC (rev 9747) +++ trunk/octave-forge/extra/control-devel/devel/test_iddata.m 2012-03-05 17:48:09 UTC (rev 9748) @@ -37,4 +37,6 @@ v = iddata ({(11:20).', (31:40).'}, {(51:60).', (71:80).'}); -w = cat (1, u, v) \ No newline at end of file +w = cat (1, u, v) + +cat (3, d, e) \ No newline at end of file Modified: trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m 2012-03-05 17:32:53 UTC (rev 9747) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m 2012-03-05 17:48:09 UTC (rev 9748) @@ -48,7 +48,6 @@ case 3 # merge - catenate experiments check_outputs (p); check_inputs (m); - check_samples (n); y = vertcat (tmp.y); u = vertcat (tmp.u); @@ -95,8 +94,8 @@ function check_samples (n) if (numel (n) > 1 && ! isequal (n{:})) - error ("iddata: cat: number of samples don't match [%s]", \ - num2str (cell2mat (n), "%d ")); + error ("iddata: cat: number of samples don't match %s", \ + mat2str (vertcat (n{:}), 10)); endif endfunction This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |