From: <par...@us...> - 2012-05-20 15:13:16
|
Revision: 10469 http://octave.svn.sourceforge.net/octave/?rev=10469&view=rev Author: paramaniac Date: 2012-05-20 15:13:10 +0000 (Sun, 20 May 2012) Log Message: ----------- control-devel: minor enhancements for error messages Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m trunk/octave-forge/extra/control-devel/inst/moen4.m trunk/octave-forge/extra/control-devel/inst/moesp.m trunk/octave-forge/extra/control-devel/inst/n4sid.m Modified: trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m 2012-05-20 14:49:09 UTC (rev 10468) +++ trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m 2012-05-20 15:13:10 UTC (rev 10469) @@ -10,6 +10,10 @@ otherwise error ("ident: invalid method"); # should never happen endswitch + + if (! isa (dat, "iddata")) + error ("%s: first argument must be an 'iddata' dataset", method); + endif alg = 0; conct = 1; Modified: trunk/octave-forge/extra/control-devel/inst/moen4.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/moen4.m 2012-05-20 14:49:09 UTC (rev 10468) +++ trunk/octave-forge/extra/control-devel/inst/moen4.m 2012-05-20 15:13:10 UTC (rev 10469) @@ -28,6 +28,10 @@ function [sys, x0] = moen4 (varargin) + if (nargin == 0) + print_usage (); + endif + [sys, x0] = __slicot_identification__ ("moen4", varargin{:}); endfunction \ No newline at end of file Modified: trunk/octave-forge/extra/control-devel/inst/moesp.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/moesp.m 2012-05-20 14:49:09 UTC (rev 10468) +++ trunk/octave-forge/extra/control-devel/inst/moesp.m 2012-05-20 15:13:10 UTC (rev 10469) @@ -26,6 +26,10 @@ function [sys, x0] = moesp (varargin) + if (nargin == 0) + print_usage (); + endif + [sys, x0] = __slicot_identification__ ("moesp", varargin{:}); endfunction \ No newline at end of file Modified: trunk/octave-forge/extra/control-devel/inst/n4sid.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/n4sid.m 2012-05-20 14:49:09 UTC (rev 10468) +++ trunk/octave-forge/extra/control-devel/inst/n4sid.m 2012-05-20 15:13:10 UTC (rev 10469) @@ -26,6 +26,10 @@ function [sys, x0] = n4sid (varargin) + if (nargin == 0) + print_usage (); + endif + [sys, x0] = __slicot_identification__ ("n4sid", varargin{:}); endfunction \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-05-21 13:40:50
|
Revision: 10474 http://octave.svn.sourceforge.net/octave/?rev=10474&view=rev Author: paramaniac Date: 2012-05-21 13:40:38 +0000 (Mon, 21 May 2012) Log Message: ----------- control-devel: work on identification user functions (2) Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m trunk/octave-forge/extra/control-devel/inst/moen4.m trunk/octave-forge/extra/control-devel/inst/moesp.m trunk/octave-forge/extra/control-devel/inst/n4sid.m Modified: trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m 2012-05-21 13:03:02 UTC (rev 10473) +++ trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m 2012-05-21 13:40:38 UTC (rev 10474) @@ -1,5 +1,32 @@ -function [sys, x0] = __slicot_identification__ (method, dat, n = []) +## Copyright (C) 2012 Lukas F. Reichlin +## +## This file is part of LTI Syncope. +## +## LTI Syncope is free software: you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation, either version 3 of the License, or +## (at your option) any later version. +## +## LTI Syncope is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with LTI Syncope. If not, see <http://www.gnu.org/licenses/>. +## -*- texinfo -*- +## @deftypefn{Function File} {[@var{sys}, @var{x0}] =} __slicot_identification__ (@var{method}, @var{dat}, @dots{}) +## Backend for moesp, moen4 and n4sid. +## @end deftypefn + +## Author: Lukas Reichlin <luk...@gm...> +## Created: May 2012 +## Version: 0.1 + +function [sys, x0] = __slicot_identification__ (method, dat, varargin) + + ## determine identification method switch (method) case "moesp" meth = 0; @@ -10,20 +37,60 @@ otherwise error ("ident: invalid method"); # should never happen endswitch - + if (! isa (dat, "iddata")) error ("%s: first argument must be an 'iddata' dataset", method); endif + + if (nargin > 2) # ident (dat, ...) + if (is_real_scalar (varargin{1})) # ident (dat, n, ...) + varargin = horzcat (varargin(2:end), {"order"}, varargin(1)); + endif + if (isstruct (varargin{1})) # ident (dat, opt, ...), ident (dat, n, opt, ...) + varargin = horzcat (__opt2cell__ (varargin{1}), varargin(2:end)); + endif + endif + + nkv = numel (varargin); # number of keys and values + + if (rem (nkv, 2)) + error ("%s: keys and values must come in pairs", method); + endif + [ns, l, m, e] = size (dat); # dataset dimensions + ## default arguments alg = 0; conct = 1; # no connection between experiments ctrl = 1; # don't confirm order n rcond = 0.0; tol = -1.0; % 0; + s = []; + n = []; - [ns, l, m, e] = size (dat); + ## handle keys and values + for k = 1 : 2 : nkv + key = lower (varargin{k}); + val = varargin{k+1}; + switch (key) + ## TODO: proper argument checking + case {"n", "order"} + n = val; + case "s" + s = val; + case {"alg", "algorithm"} + error ("alg"); + case "tol" + tol = val; + case "rcond" + rcond = val; + otherwise + warning ("%s: invalid property name '%s' ignored", method, key); + endswitch + endfor + + s = min (2*n, n+10); # upper bound for n nsmp = sum (ns); # total number of samples nobr = fix ((nsmp+1)/(2*(m+l+1))); Modified: trunk/octave-forge/extra/control-devel/inst/moen4.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/moen4.m 2012-05-21 13:03:02 UTC (rev 10473) +++ trunk/octave-forge/extra/control-devel/inst/moen4.m 2012-05-21 13:40:38 UTC (rev 10474) @@ -16,7 +16,10 @@ ## along with LTI Syncope. If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {@var{dat} =} moen4 (@var{dat}, @var{s}, @var{n}) +## @deftypefn {Function File} {[@var{sys}, @var{x0}] =} moen4 (@var{dat}, @dots{}) +## @deftypefnx {Function File} {[@var{sys}, @var{x0}] =} moen4 (@var{dat}, @var{n}, @dots{}) +## @deftypefnx {Function File} {[@var{sys}, @var{x0}] =} moen4 (@var{dat}, @var{opt}, @dots{}) +## @deftypefnx {Function File} {[@var{sys}, @var{x0}] =} moen4 (@var{dat}, @var{n}, @var{opt}, @dots{}) ## Combined method: MOESP algorithm for finding the ## matrices A and C, and N4SID algorithm for ## finding the matrices B and D. Modified: trunk/octave-forge/extra/control-devel/inst/moesp.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/moesp.m 2012-05-21 13:03:02 UTC (rev 10473) +++ trunk/octave-forge/extra/control-devel/inst/moesp.m 2012-05-21 13:40:38 UTC (rev 10474) @@ -16,7 +16,10 @@ ## along with LTI Syncope. If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {@var{dat} =} moesp (@var{dat}, @var{s}, @var{n}) +## @deftypefn {Function File} {[@var{sys}, @var{x0}] =} moesp (@var{dat}, @dots{}) +## @deftypefnx {Function File} {[@var{sys}, @var{x0}] =} moesp (@var{dat}, @var{n}, @dots{}) +## @deftypefnx {Function File} {[@var{sys}, @var{x0}] =} moesp (@var{dat}, @var{opt}, @dots{}) +## @deftypefnx {Function File} {[@var{sys}, @var{x0}] =} moesp (@var{dat}, @var{n}, @var{opt}, @dots{}) ## MOESP: Multivariable Output Error State sPace. ## @end deftypefn Modified: trunk/octave-forge/extra/control-devel/inst/n4sid.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/n4sid.m 2012-05-21 13:03:02 UTC (rev 10473) +++ trunk/octave-forge/extra/control-devel/inst/n4sid.m 2012-05-21 13:40:38 UTC (rev 10474) @@ -16,7 +16,10 @@ ## along with LTI Syncope. If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {@var{dat} =} n4sid (@var{dat}, @var{s}, @var{n}) +## @deftypefn {Function File} {[@var{sys}, @var{x0}] =} n4sid (@var{dat}, @dots{}) +## @deftypefnx {Function File} {[@var{sys}, @var{x0}] =} n4sid (@var{dat}, @var{n}, @dots{}) +## @deftypefnx {Function File} {[@var{sys}, @var{x0}] =} n4sid (@var{dat}, @var{opt}, @dots{}) +## @deftypefnx {Function File} {[@var{sys}, @var{x0}] =} n4sid (@var{dat}, @var{n}, @var{opt}, @dots{}) ## N4SID: Numerical algorithm for Subspace State Space System IDentification. ## @end deftypefn This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-05-21 15:52:16
|
Revision: 10478 http://octave.svn.sourceforge.net/octave/?rev=10478&view=rev Author: paramaniac Date: 2012-05-21 15:52:05 +0000 (Mon, 21 May 2012) Log Message: ----------- control-devel: return info struct Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m trunk/octave-forge/extra/control-devel/inst/moen4.m trunk/octave-forge/extra/control-devel/inst/moesp.m trunk/octave-forge/extra/control-devel/inst/n4sid.m Modified: trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m 2012-05-21 15:33:24 UTC (rev 10477) +++ trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m 2012-05-21 15:52:05 UTC (rev 10478) @@ -16,7 +16,7 @@ ## along with LTI Syncope. If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn{Function File} {[@var{sys}, @var{x0}] =} __slicot_identification__ (@var{method}, @var{dat}, @dots{}) +## @deftypefn{Function File} {[@var{sys}, @var{x0}], @var{info} =} __slicot_identification__ (@var{method}, @var{dat}, @dots{}) ## Backend for moesp, moen4 and n4sid. ## @end deftypefn @@ -24,7 +24,7 @@ ## Created: May 2012 ## Version: 0.1 -function [sys, x0] = __slicot_identification__ (method, dat, varargin) +function [sys, x0, info] = __slicot_identification__ (method, dat, varargin) ## determine identification method switch (method) @@ -121,9 +121,18 @@ ## assemble model sys = ss (a, b, c, d, dat.tsam{1}); + ## return x0 as vector for single-experiment data + ## instead of a cell containing one vector if (numel (x0) == 1) x0 = x0{1}; endif + + ## assemble info struct + ## Kalman gain matrix K + ## state covariance matrix Q + ## output covariance matrix Ry + ## state-output cross-covariance matrix S + info = struct ("K", k, "Q", q, "Ry", ry, "S", s) endfunction Modified: trunk/octave-forge/extra/control-devel/inst/moen4.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/moen4.m 2012-05-21 15:33:24 UTC (rev 10477) +++ trunk/octave-forge/extra/control-devel/inst/moen4.m 2012-05-21 15:52:05 UTC (rev 10478) @@ -16,10 +16,10 @@ ## along with LTI Syncope. If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {[@var{sys}, @var{x0}] =} moen4 (@var{dat}, @dots{}) -## @deftypefnx {Function File} {[@var{sys}, @var{x0}] =} moen4 (@var{dat}, @var{n}, @dots{}) -## @deftypefnx {Function File} {[@var{sys}, @var{x0}] =} moen4 (@var{dat}, @var{opt}, @dots{}) -## @deftypefnx {Function File} {[@var{sys}, @var{x0}] =} moen4 (@var{dat}, @var{n}, @var{opt}, @dots{}) +## @deftypefn {Function File} {[@var{sys}, @var{x0}, @var{info}] =} moen4 (@var{dat}, @dots{}) +## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} moen4 (@var{dat}, @var{n}, @dots{}) +## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} moen4 (@var{dat}, @var{opt}, @dots{}) +## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} moen4 (@var{dat}, @var{n}, @var{opt}, @dots{}) ## Combined method: MOESP algorithm for finding the ## matrices A and C, and N4SID algorithm for ## finding the matrices B and D. @@ -29,12 +29,260 @@ ## Created: May 2012 ## Version: 0.1 -function [sys, x0] = moen4 (varargin) +function [sys, x0, info] = moen4 (varargin) if (nargin == 0) print_usage (); endif - [sys, x0] = __slicot_identification__ ("moen4", varargin{:}); + [sys, x0, info] = __slicot_identification__ ("moen4", varargin{:}); -endfunction \ No newline at end of file +endfunction + +%{ +%! + + 4.7661 5.5451 5.8503 5.3766 4.8833 5.4865 3.5378 5.3155 6.0530 4.3729 + 4.7637 5.1886 5.9236 5.6818 4.8858 5.1495 3.5549 5.5329 6.0799 4.7417 + 4.8394 4.8833 5.9212 5.8235 4.8931 4.8442 3.4938 5.4450 6.1287 5.0884 + 5.0030 4.6000 5.9773 5.9529 4.7148 4.5414 3.4474 5.3961 6.0799 5.1861 + 5.0176 4.2704 5.7405 6.0628 4.4511 4.2679 3.4401 5.2740 6.1678 5.0372 + 5.0567 4.0384 5.3888 6.0897 4.2337 4.0604 3.4083 5.0274 6.1947 4.7856 + 5.1544 3.8381 5.0005 6.0750 4.0433 3.9602 3.4108 4.7441 6.2362 4.5634 + 5.3619 3.7112 4.8491 6.0262 3.8650 3.7893 3.4523 4.6684 6.0530 4.5341 + 5.4254 3.5915 4.9444 5.9944 3.7576 3.6428 3.6818 4.6513 5.6525 4.7050 + 5.5695 3.5353 5.1739 6.0775 3.6696 3.5256 4.0604 4.5146 5.2740 4.7417 + 5.6818 3.4865 5.3693 5.8577 3.5939 3.4987 4.4413 4.2679 4.8589 4.6489 + 5.7429 3.4767 5.4474 5.7014 3.5475 3.4547 4.8540 4.2606 4.5341 4.4315 + 5.8039 3.4254 5.6037 5.7307 3.5060 3.4083 5.1544 4.2630 4.4560 4.2386 + 5.9187 3.3815 5.7307 5.7844 3.4547 3.3790 5.4254 4.1898 4.6196 4.0652 + 5.8210 3.3693 5.8503 5.8235 3.3986 3.3766 5.5964 4.2777 4.8662 3.9431 + 5.4474 3.3644 5.9798 5.8943 3.3619 3.3619 5.5866 4.6000 5.1177 3.8113 + 5.0616 3.3473 5.9920 5.7624 3.3400 3.3595 5.3546 4.9322 5.1666 3.6916 + 4.6293 3.3815 6.0848 5.4157 3.3742 3.3693 5.0274 5.2838 5.0567 3.6525 + 4.2679 3.4206 5.9407 4.9615 3.5207 3.3986 4.8638 5.5280 5.0030 3.8259 + 4.0115 3.4132 5.8039 4.5952 3.7136 3.5793 4.7612 5.7405 5.0982 4.2240 + 3.8503 3.4523 5.7917 4.3314 3.7576 3.9480 4.5707 5.8748 5.3253 4.4242 + 3.7112 3.6355 5.6037 4.2972 3.7795 4.4120 4.3681 5.9554 5.5671 4.4291 + 3.5695 4.0384 5.2643 4.5829 3.6965 4.5854 4.3974 5.9920 5.4670 4.3192 + 3.5182 4.3754 4.9468 4.8613 3.7771 4.5146 4.5732 5.8455 5.2521 4.1385 + 3.6525 4.7270 4.6196 5.1739 3.8870 4.3436 4.8418 5.5280 4.9468 3.9651 + 3.8186 5.0567 4.5146 5.1666 3.9041 4.1556 5.2032 5.0616 4.8809 3.8870 + 3.8626 5.2985 4.4340 4.9199 3.8503 3.9847 5.4523 4.7344 4.9810 3.8015 + 4.0115 5.5329 4.2850 4.6074 3.9651 4.0433 5.6525 4.5341 5.2252 3.7014 + 4.3534 5.4670 4.1214 4.3705 4.2826 4.3070 5.8552 4.5341 5.4596 3.6403 + 4.7050 5.1959 3.9456 4.1825 4.5219 4.4218 5.9065 4.6977 5.7234 3.7673 + 5.0836 4.8858 3.9847 4.0384 4.7148 4.3534 5.9529 4.7441 5.7917 4.1507 + 5.3449 4.7637 4.2191 4.1458 4.9712 4.2240 5.8284 4.6196 5.9065 4.6489 + 5.2740 4.8760 4.5463 4.4315 5.2203 4.0530 5.7917 4.6440 5.9920 4.9908 + 5.1275 5.0420 4.8735 4.5561 5.5329 3.9407 5.7991 4.8320 5.8357 5.0884 + 4.7612 5.2838 5.1544 4.4804 5.6525 3.8381 5.8137 5.1324 5.5280 5.0225 + 4.4511 5.4914 5.3888 4.3754 5.7820 3.7307 5.8772 5.4108 5.1422 4.7832 + 4.2215 5.5964 5.6135 4.3705 5.9554 3.6525 5.9554 5.6257 4.7759 4.6855 + 4.0457 5.6721 5.8357 4.5585 6.0359 3.6110 5.7820 5.6037 4.4902 4.6660 + 3.8748 5.7722 5.8845 4.8589 6.1190 3.5646 5.5182 5.3155 4.2362 4.7075 + 3.7307 5.8308 5.9554 4.8955 6.1336 3.4963 5.1275 4.9615 4.0237 4.9126 + 3.6623 5.9334 5.7624 4.7417 6.1532 3.4621 4.7637 4.6196 3.8870 5.1959 + 3.5768 5.8992 5.4596 4.7441 6.1922 3.4547 4.4926 4.3583 3.7527 5.4157 + 3.5427 5.9358 5.0616 4.8760 6.1434 3.4254 4.2337 4.1556 3.6818 5.6232 + 3.4792 5.8943 4.7075 5.1055 6.1678 3.3790 4.0115 4.0335 3.8064 5.7405 + 3.4547 5.9187 4.4584 5.2398 5.9920 3.4328 3.8552 3.8870 4.1458 5.8992 + 3.3595 5.9944 4.2679 5.5182 5.6525 3.6232 3.6916 3.7722 4.6000 5.9285 + 3.2985 5.9578 4.0530 5.6525 5.4596 3.9749 3.6355 3.6403 5.0030 6.0506 + 3.2252 6.0311 3.9431 5.7234 5.4376 4.3803 3.8186 3.5329 5.3033 6.1532 + 3.2008 6.0628 3.8259 5.8552 5.3400 4.7148 4.1556 3.4352 5.5524 5.9651 + 3.2252 6.0408 3.9676 5.9627 5.0982 5.0738 4.5903 3.4279 5.6159 5.5866 + 3.2276 6.0970 4.2801 5.9847 4.7856 5.3693 4.9883 3.4230 5.5231 5.3815 + 3.2740 6.1239 4.4804 5.9847 4.4926 5.6037 5.0762 3.3986 5.6110 5.3717 + 3.4572 6.1629 4.4926 6.0555 4.2362 5.7453 4.9077 3.6037 5.7136 5.4865 + 3.8674 6.0408 4.3900 6.0628 4.0677 5.6525 4.6489 4.0237 5.8455 5.5671 + 4.3217 5.8455 4.1971 6.0555 3.9334 5.4010 4.3778 4.4511 5.8992 5.8210 + 4.4926 5.7722 4.1116 6.0701 3.8235 5.0152 4.2166 4.7930 5.9944 5.9138 + 4.4315 5.7991 3.9822 5.7844 3.7307 4.7099 4.2875 4.9029 6.0921 5.9944 + 4.2435 5.9236 3.8674 5.4401 3.6110 4.4169 4.5903 4.7808 6.0921 6.0115 + 4.0506 5.9285 3.7673 5.0567 3.5646 4.2362 4.8467 4.5903 6.1434 5.9993 + 3.8577 6.0018 3.8723 4.9419 3.5500 4.2362 5.1397 4.3363 6.1532 6.0188 + 3.7307 6.0018 4.2362 5.0103 3.5573 4.2484 5.3888 4.1458 6.2337 5.8210 + 3.7917 6.0604 4.6635 5.1348 3.5134 4.2215 5.6892 4.2166 6.1873 5.7282 + 3.9212 5.8821 4.9712 5.3131 3.5158 4.2972 5.8845 4.4340 6.0140 5.7405 + 3.9554 5.5109 5.0665 5.4792 3.6941 4.5903 6.0433 4.7148 5.8357 5.7649 + 3.8479 5.3229 4.9029 5.6232 4.0726 4.8931 6.1703 5.0982 5.7746 5.8821 + 3.7258 5.3717 4.6757 5.5622 4.4804 5.1348 6.2118 5.3595 5.6867 5.9260 + 3.6110 5.4547 4.3925 5.3302 4.7050 5.4279 6.2508 5.5695 5.5378 5.7502 + 3.7160 5.4376 4.0994 5.0103 4.6123 5.3790 6.2093 5.7722 5.3278 5.4157 + 4.0921 5.1593 4.1141 4.6660 4.3851 5.3644 6.0140 5.9212 5.0543 4.9956 + 4.4804 4.9029 4.3265 4.4145 4.2020 5.4523 5.7014 6.0555 4.7002 4.8613 + 4.8149 4.5878 4.6440 4.2020 4.0262 5.5671 5.4694 5.9627 4.3949 4.9029 + 5.0543 4.5024 4.9712 4.0482 3.9041 5.6721 5.4792 5.6428 4.1800 5.1031 + 5.3033 4.5952 5.1593 4.0799 3.7746 5.7698 5.5573 5.4352 4.0433 5.3644 + 5.4865 4.8247 5.3888 4.1898 3.6916 5.8308 5.7282 5.3888 3.8772 5.5964 + 5.6721 5.0640 5.5768 4.1312 3.8455 5.9236 5.8821 5.5378 3.7527 5.7527 + 5.7795 5.2716 5.6525 4.0042 4.2020 5.9651 5.9847 5.6818 3.7282 5.8455 + 5.7991 5.4670 5.8039 3.9163 4.5854 6.0579 5.9016 5.7014 3.8699 5.9285 + 5.6648 5.6159 5.9138 3.9602 4.9029 6.0506 5.5817 5.6159 4.2069 6.0066 + 5.2911 5.5280 5.8870 4.1996 5.2569 6.0726 5.3717 5.6672 4.3558 5.8406 + 4.8809 5.2545 5.7991 4.6245 5.5109 6.1116 5.4181 5.7405 4.4267 5.5182 + 4.5585 4.8833 5.7307 4.8833 5.6403 6.0701 5.5109 5.8039 4.4535 5.1739 + 4.1849 4.5170 5.7624 5.1373 5.8430 5.8967 5.6672 5.8821 4.5219 4.7392 + 3.8894 4.1971 5.8137 5.3790 5.9749 5.7551 5.7917 5.9505 4.3925 4.4584 + 3.7087 4.0018 5.8210 5.6232 5.9358 5.7185 5.6989 6.0726 4.1556 4.4267 + 3.6232 3.8064 5.9285 5.7624 5.8210 5.8210 5.4840 6.1483 3.9651 4.6025 + 3.5695 3.9041 6.0140 5.8333 5.5280 6.0018 5.1544 6.1165 3.8772 4.8223 + 3.7185 3.9236 5.7649 5.6867 5.1715 6.0018 4.9810 6.1776 3.9700 5.1837 + 4.0335 3.8699 5.4132 5.3668 4.8101 5.9016 5.0616 6.2020 4.2582 5.4303 + 4.4120 3.8064 5.0982 5.2252 4.4535 5.5573 5.1959 6.2069 4.4218 5.6525 + 4.6293 3.7209 4.6782 5.2398 4.3803 5.1739 5.3595 5.9920 4.3363 5.8210 + 4.5585 3.8186 4.3729 5.3546 4.5659 4.8003 5.6159 5.5646 4.2997 5.7063 + 4.3949 4.1409 4.3925 5.5085 4.8052 4.4315 5.7624 5.1788 4.3925 5.3693 + 4.1800 4.5292 4.5903 5.5964 5.1251 4.1947 5.8577 4.9981 4.6757 5.0274 + 4.1971 4.8052 4.9199 5.7527 5.3546 4.0066 5.9480 5.0518 4.7612 4.7050 + 4.4315 5.0860 5.0176 5.8748 5.5891 3.8503 5.8357 5.2325 4.6587 4.4145 + 4.7148 5.3400 4.8589 5.9065 5.7649 3.7478 5.7063 5.4840 4.4902 4.1458 + 4.9615 5.5329 4.6757 5.8943 5.9236 3.6428 5.4987 5.6867 4.3070 3.9651 + 5.3009 5.5768 4.6196 5.7429 5.9407 3.5915 5.1886 5.8992 4.1263 4.0335 + 5.5671 5.6672 4.8345 5.4474 5.8577 3.5695 5.1177 5.8699 3.9724 4.3729 + 5.6818 5.7917 5.0909 5.0250 5.6941 3.5280 5.1910 5.9773 4.0775 4.6831 + + + + 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 3.4100 + 3.4100 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 + 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 + 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 + 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 6.4100 3.4100 6.4100 + 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 6.4100 + 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 + 6.4100 3.4100 6.4100 3.4100 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 + 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 3.4100 3.4100 + 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 3.4100 6.4100 3.4100 + 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 3.4100 6.4100 3.4100 + 3.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 6.4100 3.4100 + 3.4100 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 3.4100 + 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 3.4100 + 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 3.4100 + 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 6.4100 6.4100 6.4100 6.4100 + 3.4100 3.4100 6.4100 3.4100 3.4100 6.4100 3.4100 6.4100 6.4100 6.4100 + 3.4100 3.4100 6.4100 3.4100 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 + 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 + 3.4100 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 6.4100 3.4100 3.4100 + 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 3.4100 3.4100 + 6.4100 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 + 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 6.4100 3.4100 6.4100 3.4100 + 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 6.4100 3.4100 + 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 3.4100 + 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 3.4100 + 6.4100 3.4100 3.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 + 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 6.4100 + 6.4100 6.4100 6.4100 6.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 + 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 6.4100 6.4100 + 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 + 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 + 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 + 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 6.4100 + 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 3.4100 3.4100 3.4100 3.4100 + 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 + 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 + 3.4100 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 + 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 + 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 + 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 + 3.4100 6.4100 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 6.4100 + 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 6.4100 + 3.4100 6.4100 3.4100 6.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 + 3.4100 6.4100 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 + 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 + 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 + 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 6.4100 6.4100 + 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 6.4100 + 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 6.4100 6.4100 + 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 + 6.4100 6.4100 3.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 + 3.4100 6.4100 3.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 + 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 6.4100 6.4100 + 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 6.4100 6.4100 + 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 6.4100 6.4100 + 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 6.4100 6.4100 + 3.4100 6.4100 6.4100 6.4100 3.4100 3.4100 6.4100 3.4100 6.4100 3.4100 + 6.4100 6.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 + 3.4100 3.4100 6.4100 6.4100 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 + 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 6.4100 6.4100 + 3.4100 6.4100 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 6.4100 6.4100 + 3.4100 6.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 + 3.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 + 6.4100 3.4100 3.4100 3.4100 3.4100 3.4100 6.4100 6.4100 3.4100 3.4100 + 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 3.4100 6.4100 3.4100 3.4100 + 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 + 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 + 6.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 + 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 + 6.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 + 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 + 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 + 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 + 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 6.4100 + 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 6.4100 3.4100 3.4100 + 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 3.4100 3.4100 + 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 6.4100 6.4100 3.4100 + 3.4100 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 + 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 6.4100 3.4100 3.4100 + 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 + 3.4100 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 + 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 + 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 + 6.4100 3.4100 3.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 + 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 6.4100 6.4100 3.4100 6.4100 + 3.4100 3.4100 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 + 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 3.4100 3.4100 + 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 + 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 6.4100 3.4100 + 6.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 + 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 + 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 + 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 + 6.4100 6.4100 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 3.4100 6.4100 + 6.4100 6.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 3.4100 6.4100 + 6.4100 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 6.4100 6.4100 6.4100 + 3.4100 6.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 + 3.4100 6.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 + 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 + +ae = [ 0.8924 0.3887 0.1285 0.1716 + -0.0837 0.6186 -0.6273 -0.4582 + 0.0052 0.1307 0.6685 -0.6755 + 0.0055 0.0734 -0.2148 0.4788 ]; + +ce = [ -0.4442 0.6663 0.3961 0.4102 ]; + +be = [ -0.2142 + -0.1968 + 0.0525 + 0.0361 ]; + +de = [ -0.0041 ]; + +ke = [ -1.9513 + -0.1867 + 0.6348 + -0.3486 ]; + +qe = [ 0.0052 0.0005 -0.0017 0.0009 + 0.0005 0.0000 -0.0002 0.0001 + -0.0017 -0.0002 0.0006 -0.0003 + 0.0009 0.0001 -0.0003 0.0002 ]; + +rye = [ 0.0012 ]; + +se = [ -0.0025 + -0.0002 + 0.0008 + -0.0005 ]; + +assert (a, ae, 1e-4); +assert (b, be, 1e-4); +assert (c, ce, 1e-4); +assert (d, de, 1e-4); +assert (k, ke, 1e-4); +assert (q, qe, 1e-4); +assert (ry, rye, 1e-4); +assert (s, se, 1e-4); +%} Modified: trunk/octave-forge/extra/control-devel/inst/moesp.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/moesp.m 2012-05-21 15:33:24 UTC (rev 10477) +++ trunk/octave-forge/extra/control-devel/inst/moesp.m 2012-05-21 15:52:05 UTC (rev 10478) @@ -16,10 +16,10 @@ ## along with LTI Syncope. If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {[@var{sys}, @var{x0}] =} moesp (@var{dat}, @dots{}) -## @deftypefnx {Function File} {[@var{sys}, @var{x0}] =} moesp (@var{dat}, @var{n}, @dots{}) -## @deftypefnx {Function File} {[@var{sys}, @var{x0}] =} moesp (@var{dat}, @var{opt}, @dots{}) -## @deftypefnx {Function File} {[@var{sys}, @var{x0}] =} moesp (@var{dat}, @var{n}, @var{opt}, @dots{}) +## @deftypefn {Function File} {[@var{sys}, @var{x0}, @var{info}] =} moesp (@var{dat}, @dots{}) +## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} moesp (@var{dat}, @var{n}, @dots{}) +## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} moesp (@var{dat}, @var{opt}, @dots{}) +## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} moesp (@var{dat}, @var{n}, @var{opt}, @dots{}) ## MOESP: Multivariable Output Error State sPace. ## @end deftypefn @@ -27,12 +27,12 @@ ## Created: May 2012 ## Version: 0.1 -function [sys, x0] = moesp (varargin) +function [sys, x0, info] = moesp (varargin) if (nargin == 0) print_usage (); endif - [sys, x0] = __slicot_identification__ ("moesp", varargin{:}); + [sys, x0, info] = __slicot_identification__ ("moesp", varargin{:}); endfunction \ No newline at end of file Modified: trunk/octave-forge/extra/control-devel/inst/n4sid.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/n4sid.m 2012-05-21 15:33:24 UTC (rev 10477) +++ trunk/octave-forge/extra/control-devel/inst/n4sid.m 2012-05-21 15:52:05 UTC (rev 10478) @@ -16,10 +16,10 @@ ## along with LTI Syncope. If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {[@var{sys}, @var{x0}] =} n4sid (@var{dat}, @dots{}) -## @deftypefnx {Function File} {[@var{sys}, @var{x0}] =} n4sid (@var{dat}, @var{n}, @dots{}) -## @deftypefnx {Function File} {[@var{sys}, @var{x0}] =} n4sid (@var{dat}, @var{opt}, @dots{}) -## @deftypefnx {Function File} {[@var{sys}, @var{x0}] =} n4sid (@var{dat}, @var{n}, @var{opt}, @dots{}) +## @deftypefn {Function File} {[@var{sys}, @var{x0}, @var{info}] =} n4sid (@var{dat}, @dots{}) +## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} n4sid (@var{dat}, @var{n}, @dots{}) +## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} n4sid (@var{dat}, @var{opt}, @dots{}) +## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} n4sid (@var{dat}, @var{n}, @var{opt}, @dots{}) ## N4SID: Numerical algorithm for Subspace State Space System IDentification. ## @end deftypefn @@ -27,12 +27,12 @@ ## Created: May 2012 ## Version: 0.1 -function [sys, x0] = n4sid (varargin) +function [sys, x0, info] = n4sid (varargin) if (nargin == 0) print_usage (); endif - [sys, x0] = __slicot_identification__ ("n4sid", varargin{:}); + [sys, x0, info] = __slicot_identification__ ("n4sid", varargin{:}); endfunction \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-05-21 16:11:25
|
Revision: 10479 http://octave.svn.sourceforge.net/octave/?rev=10479&view=rev Author: paramaniac Date: 2012-05-21 16:11:14 +0000 (Mon, 21 May 2012) Log Message: ----------- control-devel: add slicot test to moen4 Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m trunk/octave-forge/extra/control-devel/inst/moen4.m Modified: trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m 2012-05-21 15:52:05 UTC (rev 10478) +++ trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m 2012-05-21 16:11:14 UTC (rev 10479) @@ -132,7 +132,7 @@ ## state covariance matrix Q ## output covariance matrix Ry ## state-output cross-covariance matrix S - info = struct ("K", k, "Q", q, "Ry", ry, "S", s) + info = struct ("K", k, "Q", q, "Ry", ry, "S", s); endfunction Modified: trunk/octave-forge/extra/control-devel/inst/moen4.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/moen4.m 2012-05-21 15:52:05 UTC (rev 10478) +++ trunk/octave-forge/extra/control-devel/inst/moen4.m 2012-05-21 16:11:14 UTC (rev 10479) @@ -39,250 +39,254 @@ endfunction -%{ + +%!shared SYS, X0, INFO, Ae, Be, Ce, De, Ke, Qe, Rye, Se %! - - 4.7661 5.5451 5.8503 5.3766 4.8833 5.4865 3.5378 5.3155 6.0530 4.3729 - 4.7637 5.1886 5.9236 5.6818 4.8858 5.1495 3.5549 5.5329 6.0799 4.7417 - 4.8394 4.8833 5.9212 5.8235 4.8931 4.8442 3.4938 5.4450 6.1287 5.0884 - 5.0030 4.6000 5.9773 5.9529 4.7148 4.5414 3.4474 5.3961 6.0799 5.1861 - 5.0176 4.2704 5.7405 6.0628 4.4511 4.2679 3.4401 5.2740 6.1678 5.0372 - 5.0567 4.0384 5.3888 6.0897 4.2337 4.0604 3.4083 5.0274 6.1947 4.7856 - 5.1544 3.8381 5.0005 6.0750 4.0433 3.9602 3.4108 4.7441 6.2362 4.5634 - 5.3619 3.7112 4.8491 6.0262 3.8650 3.7893 3.4523 4.6684 6.0530 4.5341 - 5.4254 3.5915 4.9444 5.9944 3.7576 3.6428 3.6818 4.6513 5.6525 4.7050 - 5.5695 3.5353 5.1739 6.0775 3.6696 3.5256 4.0604 4.5146 5.2740 4.7417 - 5.6818 3.4865 5.3693 5.8577 3.5939 3.4987 4.4413 4.2679 4.8589 4.6489 - 5.7429 3.4767 5.4474 5.7014 3.5475 3.4547 4.8540 4.2606 4.5341 4.4315 - 5.8039 3.4254 5.6037 5.7307 3.5060 3.4083 5.1544 4.2630 4.4560 4.2386 - 5.9187 3.3815 5.7307 5.7844 3.4547 3.3790 5.4254 4.1898 4.6196 4.0652 - 5.8210 3.3693 5.8503 5.8235 3.3986 3.3766 5.5964 4.2777 4.8662 3.9431 - 5.4474 3.3644 5.9798 5.8943 3.3619 3.3619 5.5866 4.6000 5.1177 3.8113 - 5.0616 3.3473 5.9920 5.7624 3.3400 3.3595 5.3546 4.9322 5.1666 3.6916 - 4.6293 3.3815 6.0848 5.4157 3.3742 3.3693 5.0274 5.2838 5.0567 3.6525 - 4.2679 3.4206 5.9407 4.9615 3.5207 3.3986 4.8638 5.5280 5.0030 3.8259 - 4.0115 3.4132 5.8039 4.5952 3.7136 3.5793 4.7612 5.7405 5.0982 4.2240 - 3.8503 3.4523 5.7917 4.3314 3.7576 3.9480 4.5707 5.8748 5.3253 4.4242 - 3.7112 3.6355 5.6037 4.2972 3.7795 4.4120 4.3681 5.9554 5.5671 4.4291 - 3.5695 4.0384 5.2643 4.5829 3.6965 4.5854 4.3974 5.9920 5.4670 4.3192 - 3.5182 4.3754 4.9468 4.8613 3.7771 4.5146 4.5732 5.8455 5.2521 4.1385 - 3.6525 4.7270 4.6196 5.1739 3.8870 4.3436 4.8418 5.5280 4.9468 3.9651 - 3.8186 5.0567 4.5146 5.1666 3.9041 4.1556 5.2032 5.0616 4.8809 3.8870 - 3.8626 5.2985 4.4340 4.9199 3.8503 3.9847 5.4523 4.7344 4.9810 3.8015 - 4.0115 5.5329 4.2850 4.6074 3.9651 4.0433 5.6525 4.5341 5.2252 3.7014 - 4.3534 5.4670 4.1214 4.3705 4.2826 4.3070 5.8552 4.5341 5.4596 3.6403 - 4.7050 5.1959 3.9456 4.1825 4.5219 4.4218 5.9065 4.6977 5.7234 3.7673 - 5.0836 4.8858 3.9847 4.0384 4.7148 4.3534 5.9529 4.7441 5.7917 4.1507 - 5.3449 4.7637 4.2191 4.1458 4.9712 4.2240 5.8284 4.6196 5.9065 4.6489 - 5.2740 4.8760 4.5463 4.4315 5.2203 4.0530 5.7917 4.6440 5.9920 4.9908 - 5.1275 5.0420 4.8735 4.5561 5.5329 3.9407 5.7991 4.8320 5.8357 5.0884 - 4.7612 5.2838 5.1544 4.4804 5.6525 3.8381 5.8137 5.1324 5.5280 5.0225 - 4.4511 5.4914 5.3888 4.3754 5.7820 3.7307 5.8772 5.4108 5.1422 4.7832 - 4.2215 5.5964 5.6135 4.3705 5.9554 3.6525 5.9554 5.6257 4.7759 4.6855 - 4.0457 5.6721 5.8357 4.5585 6.0359 3.6110 5.7820 5.6037 4.4902 4.6660 - 3.8748 5.7722 5.8845 4.8589 6.1190 3.5646 5.5182 5.3155 4.2362 4.7075 - 3.7307 5.8308 5.9554 4.8955 6.1336 3.4963 5.1275 4.9615 4.0237 4.9126 - 3.6623 5.9334 5.7624 4.7417 6.1532 3.4621 4.7637 4.6196 3.8870 5.1959 - 3.5768 5.8992 5.4596 4.7441 6.1922 3.4547 4.4926 4.3583 3.7527 5.4157 - 3.5427 5.9358 5.0616 4.8760 6.1434 3.4254 4.2337 4.1556 3.6818 5.6232 - 3.4792 5.8943 4.7075 5.1055 6.1678 3.3790 4.0115 4.0335 3.8064 5.7405 - 3.4547 5.9187 4.4584 5.2398 5.9920 3.4328 3.8552 3.8870 4.1458 5.8992 - 3.3595 5.9944 4.2679 5.5182 5.6525 3.6232 3.6916 3.7722 4.6000 5.9285 - 3.2985 5.9578 4.0530 5.6525 5.4596 3.9749 3.6355 3.6403 5.0030 6.0506 - 3.2252 6.0311 3.9431 5.7234 5.4376 4.3803 3.8186 3.5329 5.3033 6.1532 - 3.2008 6.0628 3.8259 5.8552 5.3400 4.7148 4.1556 3.4352 5.5524 5.9651 - 3.2252 6.0408 3.9676 5.9627 5.0982 5.0738 4.5903 3.4279 5.6159 5.5866 - 3.2276 6.0970 4.2801 5.9847 4.7856 5.3693 4.9883 3.4230 5.5231 5.3815 - 3.2740 6.1239 4.4804 5.9847 4.4926 5.6037 5.0762 3.3986 5.6110 5.3717 - 3.4572 6.1629 4.4926 6.0555 4.2362 5.7453 4.9077 3.6037 5.7136 5.4865 - 3.8674 6.0408 4.3900 6.0628 4.0677 5.6525 4.6489 4.0237 5.8455 5.5671 - 4.3217 5.8455 4.1971 6.0555 3.9334 5.4010 4.3778 4.4511 5.8992 5.8210 - 4.4926 5.7722 4.1116 6.0701 3.8235 5.0152 4.2166 4.7930 5.9944 5.9138 - 4.4315 5.7991 3.9822 5.7844 3.7307 4.7099 4.2875 4.9029 6.0921 5.9944 - 4.2435 5.9236 3.8674 5.4401 3.6110 4.4169 4.5903 4.7808 6.0921 6.0115 - 4.0506 5.9285 3.7673 5.0567 3.5646 4.2362 4.8467 4.5903 6.1434 5.9993 - 3.8577 6.0018 3.8723 4.9419 3.5500 4.2362 5.1397 4.3363 6.1532 6.0188 - 3.7307 6.0018 4.2362 5.0103 3.5573 4.2484 5.3888 4.1458 6.2337 5.8210 - 3.7917 6.0604 4.6635 5.1348 3.5134 4.2215 5.6892 4.2166 6.1873 5.7282 - 3.9212 5.8821 4.9712 5.3131 3.5158 4.2972 5.8845 4.4340 6.0140 5.7405 - 3.9554 5.5109 5.0665 5.4792 3.6941 4.5903 6.0433 4.7148 5.8357 5.7649 - 3.8479 5.3229 4.9029 5.6232 4.0726 4.8931 6.1703 5.0982 5.7746 5.8821 - 3.7258 5.3717 4.6757 5.5622 4.4804 5.1348 6.2118 5.3595 5.6867 5.9260 - 3.6110 5.4547 4.3925 5.3302 4.7050 5.4279 6.2508 5.5695 5.5378 5.7502 - 3.7160 5.4376 4.0994 5.0103 4.6123 5.3790 6.2093 5.7722 5.3278 5.4157 - 4.0921 5.1593 4.1141 4.6660 4.3851 5.3644 6.0140 5.9212 5.0543 4.9956 - 4.4804 4.9029 4.3265 4.4145 4.2020 5.4523 5.7014 6.0555 4.7002 4.8613 - 4.8149 4.5878 4.6440 4.2020 4.0262 5.5671 5.4694 5.9627 4.3949 4.9029 - 5.0543 4.5024 4.9712 4.0482 3.9041 5.6721 5.4792 5.6428 4.1800 5.1031 - 5.3033 4.5952 5.1593 4.0799 3.7746 5.7698 5.5573 5.4352 4.0433 5.3644 - 5.4865 4.8247 5.3888 4.1898 3.6916 5.8308 5.7282 5.3888 3.8772 5.5964 - 5.6721 5.0640 5.5768 4.1312 3.8455 5.9236 5.8821 5.5378 3.7527 5.7527 - 5.7795 5.2716 5.6525 4.0042 4.2020 5.9651 5.9847 5.6818 3.7282 5.8455 - 5.7991 5.4670 5.8039 3.9163 4.5854 6.0579 5.9016 5.7014 3.8699 5.9285 - 5.6648 5.6159 5.9138 3.9602 4.9029 6.0506 5.5817 5.6159 4.2069 6.0066 - 5.2911 5.5280 5.8870 4.1996 5.2569 6.0726 5.3717 5.6672 4.3558 5.8406 - 4.8809 5.2545 5.7991 4.6245 5.5109 6.1116 5.4181 5.7405 4.4267 5.5182 - 4.5585 4.8833 5.7307 4.8833 5.6403 6.0701 5.5109 5.8039 4.4535 5.1739 - 4.1849 4.5170 5.7624 5.1373 5.8430 5.8967 5.6672 5.8821 4.5219 4.7392 - 3.8894 4.1971 5.8137 5.3790 5.9749 5.7551 5.7917 5.9505 4.3925 4.4584 - 3.7087 4.0018 5.8210 5.6232 5.9358 5.7185 5.6989 6.0726 4.1556 4.4267 - 3.6232 3.8064 5.9285 5.7624 5.8210 5.8210 5.4840 6.1483 3.9651 4.6025 - 3.5695 3.9041 6.0140 5.8333 5.5280 6.0018 5.1544 6.1165 3.8772 4.8223 - 3.7185 3.9236 5.7649 5.6867 5.1715 6.0018 4.9810 6.1776 3.9700 5.1837 - 4.0335 3.8699 5.4132 5.3668 4.8101 5.9016 5.0616 6.2020 4.2582 5.4303 - 4.4120 3.8064 5.0982 5.2252 4.4535 5.5573 5.1959 6.2069 4.4218 5.6525 - 4.6293 3.7209 4.6782 5.2398 4.3803 5.1739 5.3595 5.9920 4.3363 5.8210 - 4.5585 3.8186 4.3729 5.3546 4.5659 4.8003 5.6159 5.5646 4.2997 5.7063 - 4.3949 4.1409 4.3925 5.5085 4.8052 4.4315 5.7624 5.1788 4.3925 5.3693 - 4.1800 4.5292 4.5903 5.5964 5.1251 4.1947 5.8577 4.9981 4.6757 5.0274 - 4.1971 4.8052 4.9199 5.7527 5.3546 4.0066 5.9480 5.0518 4.7612 4.7050 - 4.4315 5.0860 5.0176 5.8748 5.5891 3.8503 5.8357 5.2325 4.6587 4.4145 - 4.7148 5.3400 4.8589 5.9065 5.7649 3.7478 5.7063 5.4840 4.4902 4.1458 - 4.9615 5.5329 4.6757 5.8943 5.9236 3.6428 5.4987 5.6867 4.3070 3.9651 - 5.3009 5.5768 4.6196 5.7429 5.9407 3.5915 5.1886 5.8992 4.1263 4.0335 - 5.5671 5.6672 4.8345 5.4474 5.8577 3.5695 5.1177 5.8699 3.9724 4.3729 - 5.6818 5.7917 5.0909 5.0250 5.6941 3.5280 5.1910 5.9773 4.0775 4.6831 - - - - 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 3.4100 - 3.4100 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 - 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 - 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 - 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 6.4100 3.4100 6.4100 - 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 6.4100 - 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 - 6.4100 3.4100 6.4100 3.4100 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 - 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 3.4100 3.4100 - 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 3.4100 6.4100 3.4100 - 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 3.4100 6.4100 3.4100 - 3.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 6.4100 3.4100 - 3.4100 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 3.4100 - 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 3.4100 - 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 3.4100 - 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 6.4100 6.4100 6.4100 6.4100 - 3.4100 3.4100 6.4100 3.4100 3.4100 6.4100 3.4100 6.4100 6.4100 6.4100 - 3.4100 3.4100 6.4100 3.4100 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 - 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 - 3.4100 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 6.4100 3.4100 3.4100 - 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 3.4100 3.4100 - 6.4100 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 - 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 6.4100 3.4100 6.4100 3.4100 - 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 6.4100 3.4100 - 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 3.4100 - 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 3.4100 - 6.4100 3.4100 3.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 - 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 6.4100 - 6.4100 6.4100 6.4100 6.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 - 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 6.4100 6.4100 - 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 - 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 - 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 - 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 6.4100 - 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 3.4100 3.4100 3.4100 3.4100 - 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 - 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 - 3.4100 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 - 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 - 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 - 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 - 3.4100 6.4100 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 6.4100 - 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 6.4100 - 3.4100 6.4100 3.4100 6.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 - 3.4100 6.4100 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 - 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 - 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 - 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 6.4100 6.4100 - 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 6.4100 - 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 6.4100 6.4100 - 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 - 6.4100 6.4100 3.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 - 3.4100 6.4100 3.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 - 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 6.4100 6.4100 - 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 6.4100 6.4100 - 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 6.4100 6.4100 - 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 6.4100 6.4100 - 3.4100 6.4100 6.4100 6.4100 3.4100 3.4100 6.4100 3.4100 6.4100 3.4100 - 6.4100 6.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 - 3.4100 3.4100 6.4100 6.4100 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 - 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 6.4100 6.4100 - 3.4100 6.4100 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 6.4100 6.4100 - 3.4100 6.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 - 3.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 - 6.4100 3.4100 3.4100 3.4100 3.4100 3.4100 6.4100 6.4100 3.4100 3.4100 - 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 3.4100 6.4100 3.4100 3.4100 - 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 - 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 - 6.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 - 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 - 6.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 - 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 - 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 - 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 - 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 6.4100 - 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 6.4100 3.4100 3.4100 - 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 3.4100 3.4100 - 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 6.4100 6.4100 3.4100 - 3.4100 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 - 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 6.4100 3.4100 3.4100 - 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 - 3.4100 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 - 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 - 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 - 6.4100 3.4100 3.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 - 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 6.4100 6.4100 3.4100 6.4100 - 3.4100 3.4100 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 - 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 3.4100 3.4100 - 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 - 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 6.4100 3.4100 - 6.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 - 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 - 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 - 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 - 6.4100 6.4100 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 3.4100 6.4100 - 6.4100 6.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 3.4100 6.4100 - 6.4100 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 6.4100 6.4100 6.4100 - 3.4100 6.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 - 3.4100 6.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 - 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 - -ae = [ 0.8924 0.3887 0.1285 0.1716 - -0.0837 0.6186 -0.6273 -0.4582 - 0.0052 0.1307 0.6685 -0.6755 - 0.0055 0.0734 -0.2148 0.4788 ]; - -ce = [ -0.4442 0.6663 0.3961 0.4102 ]; - -be = [ -0.2142 - -0.1968 - 0.0525 - 0.0361 ]; - -de = [ -0.0041 ]; - -ke = [ -1.9513 - -0.1867 - 0.6348 - -0.3486 ]; - -qe = [ 0.0052 0.0005 -0.0017 0.0009 - 0.0005 0.0000 -0.0002 0.0001 - -0.0017 -0.0002 0.0006 -0.0003 - 0.0009 0.0001 -0.0003 0.0002 ]; - -rye = [ 0.0012 ]; - -se = [ -0.0025 - -0.0002 - 0.0008 - -0.0005 ]; - -assert (a, ae, 1e-4); -assert (b, be, 1e-4); -assert (c, ce, 1e-4); -assert (d, de, 1e-4); -assert (k, ke, 1e-4); -assert (q, qe, 1e-4); -assert (ry, rye, 1e-4); -assert (s, se, 1e-4); -%} +%! Y = [ 4.7661 5.5451 5.8503 5.3766 4.8833 5.4865 3.5378 5.3155 6.0530 4.3729 +%! 4.7637 5.1886 5.9236 5.6818 4.8858 5.1495 3.5549 5.5329 6.0799 4.7417 +%! 4.8394 4.8833 5.9212 5.8235 4.8931 4.8442 3.4938 5.4450 6.1287 5.0884 +%! 5.0030 4.6000 5.9773 5.9529 4.7148 4.5414 3.4474 5.3961 6.0799 5.1861 +%! 5.0176 4.2704 5.7405 6.0628 4.4511 4.2679 3.4401 5.2740 6.1678 5.0372 +%! 5.0567 4.0384 5.3888 6.0897 4.2337 4.0604 3.4083 5.0274 6.1947 4.7856 +%! 5.1544 3.8381 5.0005 6.0750 4.0433 3.9602 3.4108 4.7441 6.2362 4.5634 +%! 5.3619 3.7112 4.8491 6.0262 3.8650 3.7893 3.4523 4.6684 6.0530 4.5341 +%! 5.4254 3.5915 4.9444 5.9944 3.7576 3.6428 3.6818 4.6513 5.6525 4.7050 +%! 5.5695 3.5353 5.1739 6.0775 3.6696 3.5256 4.0604 4.5146 5.2740 4.7417 +%! 5.6818 3.4865 5.3693 5.8577 3.5939 3.4987 4.4413 4.2679 4.8589 4.6489 +%! 5.7429 3.4767 5.4474 5.7014 3.5475 3.4547 4.8540 4.2606 4.5341 4.4315 +%! 5.8039 3.4254 5.6037 5.7307 3.5060 3.4083 5.1544 4.2630 4.4560 4.2386 +%! 5.9187 3.3815 5.7307 5.7844 3.4547 3.3790 5.4254 4.1898 4.6196 4.0652 +%! 5.8210 3.3693 5.8503 5.8235 3.3986 3.3766 5.5964 4.2777 4.8662 3.9431 +%! 5.4474 3.3644 5.9798 5.8943 3.3619 3.3619 5.5866 4.6000 5.1177 3.8113 +%! 5.0616 3.3473 5.9920 5.7624 3.3400 3.3595 5.3546 4.9322 5.1666 3.6916 +%! 4.6293 3.3815 6.0848 5.4157 3.3742 3.3693 5.0274 5.2838 5.0567 3.6525 +%! 4.2679 3.4206 5.9407 4.9615 3.5207 3.3986 4.8638 5.5280 5.0030 3.8259 +%! 4.0115 3.4132 5.8039 4.5952 3.7136 3.5793 4.7612 5.7405 5.0982 4.2240 +%! 3.8503 3.4523 5.7917 4.3314 3.7576 3.9480 4.5707 5.8748 5.3253 4.4242 +%! 3.7112 3.6355 5.6037 4.2972 3.7795 4.4120 4.3681 5.9554 5.5671 4.4291 +%! 3.5695 4.0384 5.2643 4.5829 3.6965 4.5854 4.3974 5.9920 5.4670 4.3192 +%! 3.5182 4.3754 4.9468 4.8613 3.7771 4.5146 4.5732 5.8455 5.2521 4.1385 +%! 3.6525 4.7270 4.6196 5.1739 3.8870 4.3436 4.8418 5.5280 4.9468 3.9651 +%! 3.8186 5.0567 4.5146 5.1666 3.9041 4.1556 5.2032 5.0616 4.8809 3.8870 +%! 3.8626 5.2985 4.4340 4.9199 3.8503 3.9847 5.4523 4.7344 4.9810 3.8015 +%! 4.0115 5.5329 4.2850 4.6074 3.9651 4.0433 5.6525 4.5341 5.2252 3.7014 +%! 4.3534 5.4670 4.1214 4.3705 4.2826 4.3070 5.8552 4.5341 5.4596 3.6403 +%! 4.7050 5.1959 3.9456 4.1825 4.5219 4.4218 5.9065 4.6977 5.7234 3.7673 +%! 5.0836 4.8858 3.9847 4.0384 4.7148 4.3534 5.9529 4.7441 5.7917 4.1507 +%! 5.3449 4.7637 4.2191 4.1458 4.9712 4.2240 5.8284 4.6196 5.9065 4.6489 +%! 5.2740 4.8760 4.5463 4.4315 5.2203 4.0530 5.7917 4.6440 5.9920 4.9908 +%! 5.1275 5.0420 4.8735 4.5561 5.5329 3.9407 5.7991 4.8320 5.8357 5.0884 +%! 4.7612 5.2838 5.1544 4.4804 5.6525 3.8381 5.8137 5.1324 5.5280 5.0225 +%! 4.4511 5.4914 5.3888 4.3754 5.7820 3.7307 5.8772 5.4108 5.1422 4.7832 +%! 4.2215 5.5964 5.6135 4.3705 5.9554 3.6525 5.9554 5.6257 4.7759 4.6855 +%! 4.0457 5.6721 5.8357 4.5585 6.0359 3.6110 5.7820 5.6037 4.4902 4.6660 +%! 3.8748 5.7722 5.8845 4.8589 6.1190 3.5646 5.5182 5.3155 4.2362 4.7075 +%! 3.7307 5.8308 5.9554 4.8955 6.1336 3.4963 5.1275 4.9615 4.0237 4.9126 +%! 3.6623 5.9334 5.7624 4.7417 6.1532 3.4621 4.7637 4.6196 3.8870 5.1959 +%! 3.5768 5.8992 5.4596 4.7441 6.1922 3.4547 4.4926 4.3583 3.7527 5.4157 +%! 3.5427 5.9358 5.0616 4.8760 6.1434 3.4254 4.2337 4.1556 3.6818 5.6232 +%! 3.4792 5.8943 4.7075 5.1055 6.1678 3.3790 4.0115 4.0335 3.8064 5.7405 +%! 3.4547 5.9187 4.4584 5.2398 5.9920 3.4328 3.8552 3.8870 4.1458 5.8992 +%! 3.3595 5.9944 4.2679 5.5182 5.6525 3.6232 3.6916 3.7722 4.6000 5.9285 +%! 3.2985 5.9578 4.0530 5.6525 5.4596 3.9749 3.6355 3.6403 5.0030 6.0506 +%! 3.2252 6.0311 3.9431 5.7234 5.4376 4.3803 3.8186 3.5329 5.3033 6.1532 +%! 3.2008 6.0628 3.8259 5.8552 5.3400 4.7148 4.1556 3.4352 5.5524 5.9651 +%! 3.2252 6.0408 3.9676 5.9627 5.0982 5.0738 4.5903 3.4279 5.6159 5.5866 +%! 3.2276 6.0970 4.2801 5.9847 4.7856 5.3693 4.9883 3.4230 5.5231 5.3815 +%! 3.2740 6.1239 4.4804 5.9847 4.4926 5.6037 5.0762 3.3986 5.6110 5.3717 +%! 3.4572 6.1629 4.4926 6.0555 4.2362 5.7453 4.9077 3.6037 5.7136 5.4865 +%! 3.8674 6.0408 4.3900 6.0628 4.0677 5.6525 4.6489 4.0237 5.8455 5.5671 +%! 4.3217 5.8455 4.1971 6.0555 3.9334 5.4010 4.3778 4.4511 5.8992 5.8210 +%! 4.4926 5.7722 4.1116 6.0701 3.8235 5.0152 4.2166 4.7930 5.9944 5.9138 +%! 4.4315 5.7991 3.9822 5.7844 3.7307 4.7099 4.2875 4.9029 6.0921 5.9944 +%! 4.2435 5.9236 3.8674 5.4401 3.6110 4.4169 4.5903 4.7808 6.0921 6.0115 +%! 4.0506 5.9285 3.7673 5.0567 3.5646 4.2362 4.8467 4.5903 6.1434 5.9993 +%! 3.8577 6.0018 3.8723 4.9419 3.5500 4.2362 5.1397 4.3363 6.1532 6.0188 +%! 3.7307 6.0018 4.2362 5.0103 3.5573 4.2484 5.3888 4.1458 6.2337 5.8210 +%! 3.7917 6.0604 4.6635 5.1348 3.5134 4.2215 5.6892 4.2166 6.1873 5.7282 +%! 3.9212 5.8821 4.9712 5.3131 3.5158 4.2972 5.8845 4.4340 6.0140 5.7405 +%! 3.9554 5.5109 5.0665 5.4792 3.6941 4.5903 6.0433 4.7148 5.8357 5.7649 +%! 3.8479 5.3229 4.9029 5.6232 4.0726 4.8931 6.1703 5.0982 5.7746 5.8821 +%! 3.7258 5.3717 4.6757 5.5622 4.4804 5.1348 6.2118 5.3595 5.6867 5.9260 +%! 3.6110 5.4547 4.3925 5.3302 4.7050 5.4279 6.2508 5.5695 5.5378 5.7502 +%! 3.7160 5.4376 4.0994 5.0103 4.6123 5.3790 6.2093 5.7722 5.3278 5.4157 +%! 4.0921 5.1593 4.1141 4.6660 4.3851 5.3644 6.0140 5.9212 5.0543 4.9956 +%! 4.4804 4.9029 4.3265 4.4145 4.2020 5.4523 5.7014 6.0555 4.7002 4.8613 +%! 4.8149 4.5878 4.6440 4.2020 4.0262 5.5671 5.4694 5.9627 4.3949 4.9029 +%! 5.0543 4.5024 4.9712 4.0482 3.9041 5.6721 5.4792 5.6428 4.1800 5.1031 +%! 5.3033 4.5952 5.1593 4.0799 3.7746 5.7698 5.5573 5.4352 4.0433 5.3644 +%! 5.4865 4.8247 5.3888 4.1898 3.6916 5.8308 5.7282 5.3888 3.8772 5.5964 +%! 5.6721 5.0640 5.5768 4.1312 3.8455 5.9236 5.8821 5.5378 3.7527 5.7527 +%! 5.7795 5.2716 5.6525 4.0042 4.2020 5.9651 5.9847 5.6818 3.7282 5.8455 +%! 5.7991 5.4670 5.8039 3.9163 4.5854 6.0579 5.9016 5.7014 3.8699 5.9285 +%! 5.6648 5.6159 5.9138 3.9602 4.9029 6.0506 5.5817 5.6159 4.2069 6.0066 +%! 5.2911 5.5280 5.8870 4.1996 5.2569 6.0726 5.3717 5.6672 4.3558 5.8406 +%! 4.8809 5.2545 5.7991 4.6245 5.5109 6.1116 5.4181 5.7405 4.4267 5.5182 +%! 4.5585 4.8833 5.7307 4.8833 5.6403 6.0701 5.5109 5.8039 4.4535 5.1739 +%! 4.1849 4.5170 5.7624 5.1373 5.8430 5.8967 5.6672 5.8821 4.5219 4.7392 +%! 3.8894 4.1971 5.8137 5.3790 5.9749 5.7551 5.7917 5.9505 4.3925 4.4584 +%! 3.7087 4.0018 5.8210 5.6232 5.9358 5.7185 5.6989 6.0726 4.1556 4.4267 +%! 3.6232 3.8064 5.9285 5.7624 5.8210 5.8210 5.4840 6.1483 3.9651 4.6025 +%! 3.5695 3.9041 6.0140 5.8333 5.5280 6.0018 5.1544 6.1165 3.8772 4.8223 +%! 3.7185 3.9236 5.7649 5.6867 5.1715 6.0018 4.9810 6.1776 3.9700 5.1837 +%! 4.0335 3.8699 5.4132 5.3668 4.8101 5.9016 5.0616 6.2020 4.2582 5.4303 +%! 4.4120 3.8064 5.0982 5.2252 4.4535 5.5573 5.1959 6.2069 4.4218 5.6525 +%! 4.6293 3.7209 4.6782 5.2398 4.3803 5.1739 5.3595 5.9920 4.3363 5.8210 +%! 4.5585 3.8186 4.3729 5.3546 4.5659 4.8003 5.6159 5.5646 4.2997 5.7063 +%! 4.3949 4.1409 4.3925 5.5085 4.8052 4.4315 5.7624 5.1788 4.3925 5.3693 +%! 4.1800 4.5292 4.5903 5.5964 5.1251 4.1947 5.8577 4.9981 4.6757 5.0274 +%! 4.1971 4.8052 4.9199 5.7527 5.3546 4.0066 5.9480 5.0518 4.7612 4.7050 +%! 4.4315 5.0860 5.0176 5.8748 5.5891 3.8503 5.8357 5.2325 4.6587 4.4145 +%! 4.7148 5.3400 4.8589 5.9065 5.7649 3.7478 5.7063 5.4840 4.4902 4.1458 +%! 4.9615 5.5329 4.6757 5.8943 5.9236 3.6428 5.4987 5.6867 4.3070 3.9651 +%! 5.3009 5.5768 4.6196 5.7429 5.9407 3.5915 5.1886 5.8992 4.1263 4.0335 +%! 5.5671 5.6672 4.8345 5.4474 5.8577 3.5695 5.1177 5.8699 3.9724 4.3729 +%! 5.6818 5.7917 5.0909 5.0250 5.6941 3.5280 5.1910 5.9773 4.0775 4.6831 ](:); +%! +%! +%! +%! U = [ 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 3.4100 +%! 3.4100 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 +%! 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 +%! 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 +%! 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 6.4100 3.4100 6.4100 +%! 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 6.4100 +%! 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 +%! 6.4100 3.4100 6.4100 3.4100 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 +%! 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 3.4100 3.4100 +%! 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 3.4100 6.4100 3.4100 +%! 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 3.4100 6.4100 3.4100 +%! 3.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 6.4100 3.4100 +%! 3.4100 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 3.4100 +%! 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 3.4100 +%! 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 3.4100 +%! 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 6.4100 6.4100 6.4100 6.4100 +%! 3.4100 3.4100 6.4100 3.4100 3.4100 6.4100 3.4100 6.4100 6.4100 6.4100 +%! 3.4100 3.4100 6.4100 3.4100 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 +%! 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 +%! 3.4100 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 6.4100 3.4100 3.4100 +%! 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 3.4100 3.4100 +%! 6.4100 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 +%! 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 6.4100 3.4100 6.4100 3.4100 +%! 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 6.4100 3.4100 +%! 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 3.4100 +%! 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 3.4100 +%! 6.4100 3.4100 3.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 +%! 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 6.4100 +%! 6.4100 6.4100 6.4100 6.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 +%! 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 6.4100 6.4100 +%! 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 +%! 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 +%! 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 +%! 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 6.4100 +%! 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 3.4100 3.4100 3.4100 3.4100 +%! 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 +%! 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 +%! 3.4100 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 +%! 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 +%! 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 +%! 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 +%! 3.4100 6.4100 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 6.4100 +%! 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 6.4100 +%! 3.4100 6.4100 3.4100 6.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 +%! 3.4100 6.4100 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 +%! 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 +%! 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 +%! 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 6.4100 6.4100 +%! 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 6.4100 +%! 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 6.4100 6.4100 +%! 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 +%! 6.4100 6.4100 3.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 +%! 3.4100 6.4100 3.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 +%! 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 6.4100 6.4100 +%! 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 6.4100 6.4100 +%! 3.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 3.4100 6.4100 6.4100 +%! 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 6.4100 6.4100 +%! 3.4100 6.4100 6.4100 6.4100 3.4100 3.4100 6.4100 3.4100 6.4100 3.4100 +%! 6.4100 6.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 +%! 3.4100 3.4100 6.4100 6.4100 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 +%! 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 6.4100 6.4100 +%! 3.4100 6.4100 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 6.4100 6.4100 +%! 3.4100 6.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 +%! 3.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 +%! 6.4100 3.4100 3.4100 3.4100 3.4100 3.4100 6.4100 6.4100 3.4100 3.4100 +%! 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 3.4100 6.4100 3.4100 3.4100 +%! 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 +%! 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 +%! 6.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 +%! 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 +%! 6.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 +%! 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 +%! 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 +%! 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 +%! 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 6.4100 +%! 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 6.4100 3.4100 3.4100 +%! 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 3.4100 3.4100 +%! 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 6.4100 6.4100 3.4100 +%! 3.4100 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 +%! 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 6.4100 3.4100 3.4100 +%! 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 +%! 3.4100 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 +%! 3.4100 6.4100 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 6.4100 +%! 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 6.4100 +%! 6.4100 3.4100 3.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 +%! 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 6.4100 6.4100 3.4100 6.4100 +%! 3.4100 3.4100 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 +%! 3.4100 6.4100 3.4100 6.4100 6.4100 3.4100 6.4100 3.4100 3.4100 3.4100 +%! 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 3.4100 +%! 3.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 6.4100 3.4100 +%! 6.4100 6.4100 6.4100 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 +%! 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 +%! 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 +%! 6.4100 6.4100 3.4100 6.4100 6.4100 3.4100 3.4100 6.4100 3.4100 3.4100 +%! 6.4100 6.4100 6.4100 3.4100 6.4100 3.4100 3.4100 6.4100 3.4100 6.4100 +%! 6.4100 6.4100 6.4100 3.4100 3.4100 3.4100 6.4100 6.4100 3.4100 6.4100 +%! 6.4100 6.4100 6.4100 3.4100 6.4100 3.4100 6.4100 6.4100 6.4100 6.4100 +%! 3.4100 6.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 +%! 3.4100 6.4100 6.4100 6.4100 3.4100 3.4100 6.4100 6.4100 6.4100 6.4100 +%! 3.4100 6.4100 6.4100 3.4100 3.4100 3.4100 3.4100 6.4100 6.4100 6.4100 ](:); +%! +%! +%! DAT = iddata (Y, U); +%! +%! [SYS, X0, INFO] = moen4 (DAT, "s", 15, "rcond", 0.0, "tol", -1.0, "confirm", false); +%! +%! Ae = [ 0.8924 0.3887 0.1285 0.1716 +%! -0.0837 0.6186 -0.6273 -0.4582 +%! 0.0052 0.1307 0.6685 -0.6755 +%! 0.0055 0.0734 -0.2148 0.4788 ]; +%! +%! Ce = [ -0.4442 0.6663 0.3961 0.4102 ]; +%! +%! Be = [ -0.2142 +%! -0.1968 +%! 0.0525 +%! 0.0361 ]; +%! +%! De = [ -0.0041 ]; +%! +%! Ke = [ -1.9513 +%! -0.1867 +%! 0.6348 +%! -0.3486 ]; +%! +%! Qe = [ 0.0052 0.0005 -0.0017 0.0009 +%! 0.0005 0.0000 -0.0002 0.0001 +%! -0.0017 -0.0002 0.0006 -0.0003 +%! 0.0009 0.0001 -0.0003 0.0002 ]; +%! +%! Rye = [ 0.0012 ]; +%! +%! Se = [ -0.0025 +%! -0.0002 +%! 0.0008 +%! -0.0005 ]; +%! +%!assert (SYS.A, Ae, 1e-4); +%!assert (SYS.B, Be, 1e-4); +%!assert (SYS.C, Ce, 1e-4); +%!assert (SYS.D, De, 1e-4); +%!assert (INFO.K, Ke, 1e-4); +%!assert (INFO.Q, Qe, 1e-4); +%!assert (INFO.Ry, Rye, 1e-4); +%!assert (INFO.S, Se, 1e-4); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-05-21 20:15:48
|
Revision: 10482 http://octave.svn.sourceforge.net/octave/?rev=10482&view=rev Author: paramaniac Date: 2012-05-21 20:15:41 +0000 (Mon, 21 May 2012) Log Message: ----------- control-devel: don't confirm system order if requested Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m trunk/octave-forge/extra/control-devel/inst/test_devel.m Modified: trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m 2012-05-21 19:56:13 UTC (rev 10481) +++ trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m 2012-05-21 20:15:41 UTC (rev 10482) @@ -67,6 +67,7 @@ tol = -1.0; % 0; s = []; n = []; + conf = []; ## handle keys and values for k = 1 : 2 : nkv @@ -84,6 +85,8 @@ tol = val; case "rcond" rcond = val; + case "confirm" + conf = logical (val); otherwise warning ("%s: invalid property name '%s' ignored", method, key); endswitch @@ -114,6 +117,9 @@ endif endif + if (! isempty (conf)) + ctrl = ! conf; + endif ## perform system identification [a, b, c, d, q, ry, s, k, x0] = slident (dat.y, dat.u, nobr, n, meth, alg, conct, ctrl, rcond, tol); Modified: trunk/octave-forge/extra/control-devel/inst/test_devel.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/test_devel.m 2012-05-21 19:56:13 UTC (rev 10481) +++ trunk/octave-forge/extra/control-devel/inst/test_devel.m 2012-05-21 20:15:41 UTC (rev 10482) @@ -3,3 +3,5 @@ test @iddata/cat test @iddata/detrend test @iddata/fft + +test moen4 \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-06-29 07:33:07
|
Revision: 10703 http://octave.svn.sourceforge.net/octave/?rev=10703&view=rev Author: paramaniac Date: 2012-06-29 07:33:00 +0000 (Fri, 29 Jun 2012) Log Message: ----------- control-devel: support frequency domain datasets Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/@iddata/iddata.m trunk/octave-forge/extra/control-devel/inst/@iddata/ifft.m trunk/octave-forge/extra/control-devel/inst/@iddata/set.m trunk/octave-forge/extra/control-devel/inst/__iddata_dim__.m Modified: trunk/octave-forge/extra/control-devel/inst/@iddata/iddata.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/iddata.m 2012-06-29 06:08:32 UTC (rev 10702) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/iddata.m 2012-06-29 07:33:00 UTC (rev 10703) @@ -141,6 +141,10 @@ dat = set (dat, varargin{:}); endif + if (dat.timedomain && ! is_real_matrix (dat.y{:}, dat.u{:})) + error ("iddata: require real-valued input and output signals for time domain datasets"); + endif + endfunction Modified: trunk/octave-forge/extra/control-devel/inst/@iddata/ifft.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/ifft.m 2012-06-29 06:08:32 UTC (rev 10702) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/ifft.m 2012-06-29 07:33:00 UTC (rev 10703) @@ -67,6 +67,7 @@ ## ifft (x, n, dim=1) because x could be a row vector (n=1) % dat.w = cellfun (@(n, tsam) (0:fix(n/2)).' * (2*pi/abs(tsam)/n), n, dat.tsam, "uniformoutput", false); + dat.w = {}; ## abs(tsam) because of -1 for undefined sampling times dat.timedomain = true; Modified: trunk/octave-forge/extra/control-devel/inst/@iddata/set.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/set.m 2012-06-29 06:08:32 UTC (rev 10702) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/set.m 2012-06-29 07:33:00 UTC (rev 10703) @@ -94,6 +94,14 @@ dat.expname = __adjust_labels__ (val, e); case {"tsam", "ts"} dat.tsam = __adjust_iddata_tsam__ (val, e); + case {"w", "frequency"} + if (! isempty (val) && (! is_real_vector (val) || any (val < 0) \ + || ! issorted (val) || val(1) > val(end) \ + || length (unique (val)) != length (val))) + error ("iddata: set: w must be a vector of positive real values in ascending order"); + endif + dat.w = val; + dat.timedomain = false; case "name" if (ischar (val)) sys.name = val; Modified: trunk/octave-forge/extra/control-devel/inst/__iddata_dim__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__iddata_dim__.m 2012-06-29 06:08:32 UTC (rev 10702) +++ trunk/octave-forge/extra/control-devel/inst/__iddata_dim__.m 2012-06-29 07:33:00 UTC (rev 10703) @@ -30,8 +30,8 @@ function [p, m] = __experiment_dim__ (y, u = []) - if (! is_real_matrix (y, u)) - error ("iddata: inputs and outputs must be real"); + if (! is_matrix (y, u)) + error ("iddata: inputs and outputs must be real or complex matrices"); endif [ly, p] = size (y); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-06-29 08:14:38
|
Revision: 10704 http://octave.svn.sourceforge.net/octave/?rev=10704&view=rev Author: paramaniac Date: 2012-06-29 08:14:29 +0000 (Fri, 29 Jun 2012) Log Message: ----------- control-devel: support frequency domain datasets (2) Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/@iddata/ifft.m trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m trunk/octave-forge/extra/control-devel/inst/arx.m trunk/octave-forge/extra/control-devel/inst/moen4.m Modified: trunk/octave-forge/extra/control-devel/inst/@iddata/ifft.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/ifft.m 2012-06-29 07:33:00 UTC (rev 10703) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/ifft.m 2012-06-29 08:14:29 UTC (rev 10704) @@ -53,6 +53,14 @@ return; endif + if (any (cellfun (@(w) w(1) >= eps, dat.w))) + error ("iddata: ifft: first frequency must be zero"); + endif + + if (any (cellfun (@(w) any (abs (diff (w, 2)) > 1e-4*w(2:end-1)), dat.w))) + error ("iddata: ifft: require linearly spaced frequency vectors"); + endif + [x, ~, ~, e] = size (dat); x = x(:); Modified: trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m 2012-06-29 07:33:00 UTC (rev 10703) +++ trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m 2012-06-29 08:14:29 UTC (rev 10704) @@ -38,8 +38,8 @@ error ("ident: invalid method"); # should never happen endswitch - if (! isa (dat, "iddata")) - error ("%s: first argument must be an 'iddata' dataset", method); + if (! isa (dat, "iddata") || ! dat.timedomain) + error ("%s: first argument must be a time-domain 'iddata' dataset", method); endif if (nargin > 2) # ident (dat, ...) Modified: trunk/octave-forge/extra/control-devel/inst/arx.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/arx.m 2012-06-29 07:33:00 UTC (rev 10703) +++ trunk/octave-forge/extra/control-devel/inst/arx.m 2012-06-29 08:14:29 UTC (rev 10704) @@ -25,7 +25,7 @@ ## @strong{Inputs} ## @table @var ## @item dat -## iddata set containing the measurements. +## iddata set containing the measurements, i.e. time-domain signals. ## @item n ## The desired order of the resulting model @var{sys}. ## @item @dots{} @@ -89,8 +89,8 @@ print_usage (); endif - if (! isa (dat, "iddata")) - error ("arx: first argument must be an iddata dataset"); + if (! isa (dat, "iddata") || ! dat.timedomain) + error ("arx: first argument must be a time-domain iddata dataset"); endif if (is_real_scalar (varargin{1})) # arx (dat, n, ...) Modified: trunk/octave-forge/extra/control-devel/inst/moen4.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/moen4.m 2012-06-29 07:33:00 UTC (rev 10703) +++ trunk/octave-forge/extra/control-devel/inst/moen4.m 2012-06-29 08:14:29 UTC (rev 10704) @@ -27,7 +27,7 @@ ## @strong{Inputs} ## @table @var ## @item dat -## iddata set containing the measurements. +## iddata set containing the measurements, i.e. time-domain signals. ## @item n ## The desired order of the resulting state-space system @var{sys}. ## If not specified, @var{n} is chosen automatically according This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-07-04 15:19:50
|
Revision: 10727 http://octave.svn.sourceforge.net/octave/?rev=10727&view=rev Author: paramaniac Date: 2012-07-04 15:19:39 +0000 (Wed, 04 Jul 2012) Log Message: ----------- control-devel: work on docstrings Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/arx.m trunk/octave-forge/extra/control-devel/inst/moen4.m trunk/octave-forge/extra/control-devel/inst/moesp.m trunk/octave-forge/extra/control-devel/inst/n4sid.m Modified: trunk/octave-forge/extra/control-devel/inst/arx.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/arx.m 2012-07-04 10:23:38 UTC (rev 10726) +++ trunk/octave-forge/extra/control-devel/inst/arx.m 2012-07-04 15:19:39 UTC (rev 10727) @@ -20,7 +20,7 @@ ## @deftypefnx {Function File} {[@var{sys}, @var{x0}] =} arx (@var{dat}, @var{n}, @var{opt}, @dots{}) ## @deftypefnx {Function File} {[@var{sys}, @var{x0}] =} arx (@var{dat}, @var{opt}, @dots{}) ## @deftypefnx {Function File} {[@var{sys}, @var{x0}] =} arx (@var{dat}, @var{'na'}, @var{na}, @var{'nb'}, @var{nb}) -## ARX +## Estimate ARX model using QR factorization. ## ## @strong{Inputs} ## @table @var @@ -50,16 +50,14 @@ ## @end table ## ## -## ## @strong{Option Keys and Values} ## @table @var ## @item 'na' -## The desired order of the resulting state-space system @var{sys}. -## @var{s} > @var{n} > 0. +## Order of the polynomial A(q) and number of poles. ## ## @item 'nb' -## The desired order of the resulting state-space system @var{sys}. -## @var{s} > @var{n} > 0. +## Order of the polynomial B(q)+1 and number of zeros+1. +## @var{nb} <= @var{na}. ## @end table ## ## Modified: trunk/octave-forge/extra/control-devel/inst/moen4.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/moen4.m 2012-07-04 10:23:38 UTC (rev 10726) +++ trunk/octave-forge/extra/control-devel/inst/moen4.m 2012-07-04 15:19:39 UTC (rev 10727) @@ -20,9 +20,9 @@ ## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} moen4 (@var{dat}, @var{n}, @dots{}) ## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} moen4 (@var{dat}, @var{opt}, @dots{}) ## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} moen4 (@var{dat}, @var{n}, @var{opt}, @dots{}) -## Combined method: MOESP algorithm for finding the -## matrices A and C, and N4SID algorithm for -## finding the matrices B and D. +## Estimate state-space model using combined subspace method: +## MOESP algorithm for finding the matrices A and C, +## and N4SID algorithm for finding the matrices B and D. ## ## @strong{Inputs} ## @table @var @@ -93,19 +93,40 @@ ## Hankel matrices. ## @end table ## -## ## @item 'tol' -## The desired order of the resulting reduced order system @var{Gr}. +## Absolute tolerance used for determining an estimate of +## the system order. If @var{tol} >= 0, the estimate is +## indicated by the index of the last singular value greater +## than or equal to @var{tol}. (Singular values less than @var{tol} +## are considered as zero.) When @var{tol} = 0, an internally +## computed default value, @var{tol} = @var{s}*@var{eps}*SV(1), is used, +## where SV(1) is the maximal singular value, and @var{eps} is +## the relative machine precision. +## When @var{tol} < 0, the estimate is indicated by the +## index of the singular value that has the largest +## logarithmic gap to its successor. ## -## ## @item 'rcond' -## The desired order of the resulting reduced order system @var{Gr}. +## The tolerance to be used for estimating the rank of +## matrices. If the user sets @var{rcond} > 0, the given value +## of @var{rcond} is used as a lower bound for the reciprocal +## condition number; an m-by-n matrix whose estimated +## condition number is less than 1/@var{rcond} is considered to +## be of full rank. If the user sets @var{rcond} <= 0, then an +## implicitly computed, default tolerance, defined by +## @var{rcond} = m*n*@var{eps}, is used instead, where @var{eps} is the +## relative machine precision. ## -## ## @item 'confirm' -## The desired order of the resulting reduced order system @var{Gr}. +## Specifies whether or not the user's confirmation of the +## system order estimate is desired, as follows: +## @table @var +## @item true +## User's confirmation. +## @item false +## No confirmation. Default value. +## @end table ## -## ## @item 'noise' ## The desired type of noise input channels. ## @table @var @@ -170,28 +191,28 @@ ## @end iftex ## @ifnottex ## @example -## x[k+1] = A x[k] + B u[k] +## ^ ^ ^ +## x[k+1] = A x[k] + B u[k] + K(y[k] - y[k]) +## ^ ^ ## y[k] = C x[k] + D u[k] ## @end example ## @end ifnottex -## @end table ## -## -## @item 'method' -## Specifies the computational approach to be used. -## Valid values corresponding to this key are: -## @table @var -## @item 'descriptor' -## Use the inverse free descriptor system approach. -## @item 'standard' -## Use the inversion based standard approach. -## @item 'auto' -## Switch automatically to the inverse free -## descriptor approach in case of badly conditioned -## feedthrough matrices in V or W. Default method. +## @iftex +## @tex +## $$ \\widehat{x}_{k+1} = (A-KC) \\widehat{x}_k + (B-KD) u_k + K y_k $$ +## $$ \\widehat{y}_k = C \\widehat{x}_k + D u_k + 0 y_k $$ +## @end tex +## @end iftex +## @ifnottex +## @example +## ^ ^ +## x[k+1] = (A-KC) x[k] + (B-KD) u[k] + K y[k] +## ^ ^ +## y[k] = C x[k] + D u[k] + 0 y[k] +## @end example +## @end ifnottex ## @end table -## -## ## @end table ## ## Modified: trunk/octave-forge/extra/control-devel/inst/moesp.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/moesp.m 2012-07-04 10:23:38 UTC (rev 10726) +++ trunk/octave-forge/extra/control-devel/inst/moesp.m 2012-07-04 15:19:39 UTC (rev 10727) @@ -20,6 +20,7 @@ ## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} moesp (@var{dat}, @var{n}, @dots{}) ## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} moesp (@var{dat}, @var{opt}, @dots{}) ## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} moesp (@var{dat}, @var{n}, @var{opt}, @dots{}) +## Estimate state-space model using MOESP algorithm. ## MOESP: Multivariable Output Error State sPace. ## @end deftypefn Modified: trunk/octave-forge/extra/control-devel/inst/n4sid.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/n4sid.m 2012-07-04 10:23:38 UTC (rev 10726) +++ trunk/octave-forge/extra/control-devel/inst/n4sid.m 2012-07-04 15:19:39 UTC (rev 10727) @@ -20,6 +20,7 @@ ## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} n4sid (@var{dat}, @var{n}, @dots{}) ## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} n4sid (@var{dat}, @var{opt}, @dots{}) ## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} n4sid (@var{dat}, @var{n}, @var{opt}, @dots{}) +## Estimate state-space model using N4SID algorithm. ## N4SID: Numerical algorithm for Subspace State Space System IDentification. ## @end deftypefn This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-08-01 19:44:39
|
Revision: 10798 http://octave.svn.sourceforge.net/octave/?rev=10798&view=rev Author: paramaniac Date: 2012-08-01 19:44:32 +0000 (Wed, 01 Aug 2012) Log Message: ----------- control-devel: show singular value plot if no return arguments are specified Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m trunk/octave-forge/extra/control-devel/inst/moen4.m trunk/octave-forge/extra/control-devel/inst/moesp.m trunk/octave-forge/extra/control-devel/inst/n4sid.m Modified: trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m 2012-08-01 18:53:17 UTC (rev 10797) +++ trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m 2012-08-01 19:44:32 UTC (rev 10798) @@ -24,7 +24,7 @@ ## Created: May 2012 ## Version: 0.1 -function [sys, x0, info] = __slicot_identification__ (method, dat, varargin) +function [sys, x0, info] = __slicot_identification__ (method, nout, dat, varargin) ## determine identification method switch (method) @@ -42,7 +42,7 @@ error ("%s: first argument must be a time-domain 'iddata' dataset", method); endif - if (nargin > 2) # ident (dat, ...) + if (nargin > 3) # ident (dat, ...) if (is_real_scalar (varargin{1})) # ident (dat, n, ...) varargin = horzcat (varargin(2:end), {"order"}, varargin(1)); endif @@ -143,53 +143,72 @@ if (! isempty (conf)) ctrl = ! conf; endif - - ## perform system identification - [a, b, c, d, q, ry, s, k, x0] = slident (dat.y, dat.u, nobr, n, meth, alg, conct, ctrl, rcond, tol); - ## compute noise variance matrix factor L - ## L L' = Ry, e = L v - ## v becomes white noise with identity covariance matrix - l = chol (ry, "lower"); + if (nout == 0) + ## compute singular values + [sv, nrec] = slib01ad (dat.y, dat.u, nobr, n, meth, alg, conct, ctrl, rcond, tol); - ## assemble model - [inname, outname] = get (dat, "inname", "outname"); - if (strncmpi (noise, "e", 1)) # add error inputs e, not normalized - sys = ss (a, [b, k], c, [d, eye(p)], tsam); - in_u = __labels__ (inname, "u"); - in_e = __labels__ (outname, "y"); - in_e = cellfun (@(x) ["e@", x], in_e, "uniformoutput", false); - inname = [in_u; in_e]; - elseif (strncmpi (noise, "v", 1)) # add error inputs v, normalized - sys = ss (a, [b, k*l], c, [d, l], tsam); - in_u = __labels__ (inname, "u"); - in_v = __labels__ (outname, "y"); - in_v = cellfun (@(x) ["v@", x], in_v, "uniformoutput", false); - inname = [in_u; in_v]; - elseif (strncmpi (noise, "k", 1)) # Kalman predictor - sys = ss ([a-k*c], [b-k*d, k], c, [d, zeros(p)], tsam); - in_u = __labels__ (inname, "u"); - in_y = __labels__ (outname, "y"); - inname = [in_u; in_y]; - else # no error inputs, default - sys = ss (a, b, c, d, tsam); - endif + ## there is no 'logbar' function + svl = log10 (sv); + base = floor (min (svl)); - sys = set (sys, "inname", inname, "outname", outname); + clf + bar (svl, "basevalue", base) + xlim ([0, length(sv)+1]) + yl = ylim; + ylim ([base, yl(2)]) + title ("Singular Values") + ylabel ("Logarithm of Singular Values") + xlabel (sprintf ("Estimated System Order with current Tolerance: %d", nrec)) + grid on + else + ## perform system identification + [a, b, c, d, q, ry, s, k, x0] = slident (dat.y, dat.u, nobr, n, meth, alg, conct, ctrl, rcond, tol); - ## return x0 as vector for single-experiment data - ## instead of a cell containing one vector - if (numel (x0) == 1) - x0 = x0{1}; + ## compute noise variance matrix factor L + ## L L' = Ry, e = L v + ## v becomes white noise with identity covariance matrix + l = chol (ry, "lower"); + + ## assemble model + [inname, outname] = get (dat, "inname", "outname"); + if (strncmpi (noise, "e", 1)) # add error inputs e, not normalized + sys = ss (a, [b, k], c, [d, eye(p)], tsam); + in_u = __labels__ (inname, "u"); + in_e = __labels__ (outname, "y"); + in_e = cellfun (@(x) ["e@", x], in_e, "uniformoutput", false); + inname = [in_u; in_e]; + elseif (strncmpi (noise, "v", 1)) # add error inputs v, normalized + sys = ss (a, [b, k*l], c, [d, l], tsam); + in_u = __labels__ (inname, "u"); + in_v = __labels__ (outname, "y"); + in_v = cellfun (@(x) ["v@", x], in_v, "uniformoutput", false); + inname = [in_u; in_v]; + elseif (strncmpi (noise, "k", 1)) # Kalman predictor + sys = ss ([a-k*c], [b-k*d, k], c, [d, zeros(p)], tsam); + in_u = __labels__ (inname, "u"); + in_y = __labels__ (outname, "y"); + inname = [in_u; in_y]; + else # no error inputs, default + sys = ss (a, b, c, d, tsam); + endif + + sys = set (sys, "inname", inname, "outname", outname); + + ## return x0 as vector for single-experiment data + ## instead of a cell containing one vector + if (numel (x0) == 1) + x0 = x0{1}; + endif + + ## assemble info struct + ## Kalman gain matrix K + ## state covariance matrix Q + ## output covariance matrix Ry + ## state-output cross-covariance matrix S + ## noise variance matrix factor L + info = struct ("K", k, "Q", q, "Ry", ry, "S", s, "L", l); endif - - ## assemble info struct - ## Kalman gain matrix K - ## state covariance matrix Q - ## output covariance matrix Ry - ## state-output cross-covariance matrix S - ## noise variance matrix factor L - info = struct ("K", k, "Q", q, "Ry", ry, "S", s, "L", l); endfunction Modified: trunk/octave-forge/extra/control-devel/inst/moen4.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/moen4.m 2012-08-01 18:53:17 UTC (rev 10797) +++ trunk/octave-forge/extra/control-devel/inst/moen4.m 2012-08-01 19:44:32 UTC (rev 10798) @@ -232,7 +232,11 @@ print_usage (); endif - [sys, x0, info] = __slicot_identification__ ("moen4", varargin{:}); + if (nargout == 0) + __slicot_identification__ ("moen4", nargout, varargin{:}); + else + [sys, x0, info] = __slicot_identification__ ("moen4", nargout, varargin{:}); + endif endfunction Modified: trunk/octave-forge/extra/control-devel/inst/moesp.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/moesp.m 2012-08-01 18:53:17 UTC (rev 10797) +++ trunk/octave-forge/extra/control-devel/inst/moesp.m 2012-08-01 19:44:32 UTC (rev 10798) @@ -34,6 +34,10 @@ print_usage (); endif - [sys, x0, info] = __slicot_identification__ ("moesp", varargin{:}); + if (nargout == 0) + __slicot_identification__ ("moesp", nargout, varargin{:}); + else + [sys, x0, info] = __slicot_identification__ ("moesp", nargout, varargin{:}); + endif -endfunction \ No newline at end of file +endfunction Modified: trunk/octave-forge/extra/control-devel/inst/n4sid.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/n4sid.m 2012-08-01 18:53:17 UTC (rev 10797) +++ trunk/octave-forge/extra/control-devel/inst/n4sid.m 2012-08-01 19:44:32 UTC (rev 10798) @@ -34,6 +34,10 @@ print_usage (); endif - [sys, x0, info] = __slicot_identification__ ("n4sid", varargin{:}); + if (nargout == 0) + __slicot_identification__ ("n4sid", nargout, varargin{:}); + else + [sys, x0, info] = __slicot_identification__ ("n4sid", nargout, varargin{:}); + endif -endfunction \ No newline at end of file +endfunction This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-08-02 17:46:12
|
Revision: 10799 http://octave.svn.sourceforge.net/octave/?rev=10799&view=rev Author: paramaniac Date: 2012-08-02 17:46:05 +0000 (Thu, 02 Aug 2012) Log Message: ----------- control-devel: support algorithm option Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m trunk/octave-forge/extra/control-devel/inst/moen4.m trunk/octave-forge/extra/control-devel/inst/moesp.m trunk/octave-forge/extra/control-devel/inst/n4sid.m Modified: trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m 2012-08-01 19:44:32 UTC (rev 10798) +++ trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m 2012-08-02 17:46:05 UTC (rev 10799) @@ -72,7 +72,7 @@ conct = 1; # no connection between experiments ctrl = 1; # don't confirm order n rcond = 0.0; - tol = -1.0; + tol = 0.0; # -1.0; s = []; n = []; conf = []; @@ -94,7 +94,15 @@ endif s = val; case {"alg", "algorithm"} - error ("alg"); + if (strncmpi (val, "c", 1)) + alg = 0; # Cholesky algorithm applied to correlation matrix + elseif (strncmpi (val, "f", 1)) + alg = 1; # fast QR algorithm + elseif (strncmpi (val, "q", 1)) + alg = 2; # QR algorithm applied to block Hankel matrices + else + error ("%s: invalid algorithm", method); + endif case "tol" if (! is_real_scalar (val)) error ("%s: tolerance 'tol' must be a real scalar", method); Modified: trunk/octave-forge/extra/control-devel/inst/moen4.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/moen4.m 2012-08-01 19:44:32 UTC (rev 10798) +++ trunk/octave-forge/extra/control-devel/inst/moen4.m 2012-08-02 17:46:05 UTC (rev 10799) @@ -21,8 +21,10 @@ ## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} moen4 (@var{dat}, @var{opt}, @dots{}) ## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} moen4 (@var{dat}, @var{n}, @var{opt}, @dots{}) ## Estimate state-space model using combined subspace method: -## MOESP algorithm for finding the matrices A and C, -## and N4SID algorithm for finding the matrices B and D. +## @acronym{MOESP} algorithm for finding the matrices A and C, +## and @acronym{N4SID} algorithm for finding the matrices B and D. +## If no output arguments are given, the singular values are +## plotted on the screen in order to estimate the system order. ## ## @strong{Inputs} ## @table @var @@ -104,7 +106,7 @@ ## the relative machine precision. ## When @var{tol} < 0, the estimate is indicated by the ## index of the singular value that has the largest -## logarithmic gap to its successor. +## logarithmic gap to its successor. Default value is 0. ## ## @item 'rcond' ## The tolerance to be used for estimating the rank of @@ -115,7 +117,7 @@ ## be of full rank. If the user sets @var{rcond} <= 0, then an ## implicitly computed, default tolerance, defined by ## @var{rcond} = m*n*@var{eps}, is used instead, where @var{eps} is the -## relative machine precision. +## relative machine precision. Default value is 0. ## ## @item 'confirm' ## Specifies whether or not the user's confirmation of the Modified: trunk/octave-forge/extra/control-devel/inst/moesp.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/moesp.m 2012-08-01 19:44:32 UTC (rev 10798) +++ trunk/octave-forge/extra/control-devel/inst/moesp.m 2012-08-02 17:46:05 UTC (rev 10799) @@ -20,8 +20,8 @@ ## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} moesp (@var{dat}, @var{n}, @dots{}) ## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} moesp (@var{dat}, @var{opt}, @dots{}) ## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} moesp (@var{dat}, @var{n}, @var{opt}, @dots{}) -## Estimate state-space model using MOESP algorithm. -## MOESP: Multivariable Output Error State sPace. +## Estimate state-space model using @acronym{MOESP} algorithm. +## @acronym{MOESP}: Multivariable Output Error State sPace. ## @end deftypefn ## Author: Lukas Reichlin <luk...@gm...> Modified: trunk/octave-forge/extra/control-devel/inst/n4sid.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/n4sid.m 2012-08-01 19:44:32 UTC (rev 10798) +++ trunk/octave-forge/extra/control-devel/inst/n4sid.m 2012-08-02 17:46:05 UTC (rev 10799) @@ -20,8 +20,8 @@ ## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} n4sid (@var{dat}, @var{n}, @dots{}) ## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} n4sid (@var{dat}, @var{opt}, @dots{}) ## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} n4sid (@var{dat}, @var{n}, @var{opt}, @dots{}) -## Estimate state-space model using N4SID algorithm. -## N4SID: Numerical algorithm for Subspace State Space System IDentification. +## Estimate state-space model using @acronym{N4SID} algorithm. +## @acronym{N4SID}: Numerical algorithm for Subspace State Space System IDentification. ## @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-08-04 18:10:17
|
Revision: 10818 http://octave.svn.sourceforge.net/octave/?rev=10818&view=rev Author: paramaniac Date: 2012-08-04 18:10:11 +0000 (Sat, 04 Aug 2012) Log Message: ----------- control-devel: copy-paste docstrings Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/moesp.m trunk/octave-forge/extra/control-devel/inst/n4sid.m trunk/octave-forge/extra/control-devel/inst/test_devel.m Modified: trunk/octave-forge/extra/control-devel/inst/moesp.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/moesp.m 2012-08-04 13:50:51 UTC (rev 10817) +++ trunk/octave-forge/extra/control-devel/inst/moesp.m 2012-08-04 18:10:11 UTC (rev 10818) @@ -22,6 +22,205 @@ ## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} moesp (@var{dat}, @var{n}, @var{opt}, @dots{}) ## Estimate state-space model using @acronym{MOESP} algorithm. ## @acronym{MOESP}: Multivariable Output Error State sPace. +## If no output arguments are given, the singular values are +## plotted on the screen in order to estimate the system order. +## +## @strong{Inputs} +## @table @var +## @item dat +## iddata set containing the measurements, i.e. time-domain signals. +## @item n +## The desired order of the resulting state-space system @var{sys}. +## If not specified, @var{n} is chosen automatically according +## to the singular values and tolerances. +## @item @dots{} +## Optional pairs of keys and values. @code{'key1', value1, 'key2', value2}. +## @item opt +## Optional struct with keys as field names. +## Struct @var{opt} can be created directly or +## by command @command{options}. @code{opt.key1 = value1, opt.key2 = value2}. +## @end table +## +## +## @strong{Outputs} +## @table @var +## @item sys +## Discrete-time state-space model. +## @item x0 +## Initial state vector. If @var{dat} is a multi-experiment dataset, +## @var{x0} becomes a cell vector containing an initial state vector +## for each experiment. +## @item info +## Struct containing additional information. +## @table @var +## @item info.K +## Kalman gain matrix. +## @item info.Q +## State covariance matrix. +## @item info.Ry +## Output covariance matrix. +## @item info.S +## State-output cross-covariance matrix. +## @item info.L +## Noise variance matrix factor. LL'=Ry. +## @end table +## @end table +## +## +## +## @strong{Option Keys and Values} +## @table @var +## @item 'n' +## The desired order of the resulting state-space system @var{sys}. +## @var{s} > @var{n} > 0. +## +## @item 's' +## The number of block rows @var{s} in the input and output +## block Hankel matrices to be processed. @var{s} > 0. +## In the MOESP theory, @var{s} should be larger than @var{n}, +## the estimated dimension of state vector. +## +## @item 'alg', 'algorithm' +## Specifies the algorithm for computing the triangular +## factor R, as follows: +## @table @var +## @item 'C' +## Cholesky algorithm applied to the correlation +## matrix of the input-output data. Default method. +## @item 'F' +## Fast QR algorithm. +## @item 'Q' +## QR algorithm applied to the concatenated block +## Hankel matrices. +## @end table +## +## @item 'tol' +## Absolute tolerance used for determining an estimate of +## the system order. If @var{tol} >= 0, the estimate is +## indicated by the index of the last singular value greater +## than or equal to @var{tol}. (Singular values less than @var{tol} +## are considered as zero.) When @var{tol} = 0, an internally +## computed default value, @var{tol} = @var{s}*@var{eps}*SV(1), is used, +## where SV(1) is the maximal singular value, and @var{eps} is +## the relative machine precision. +## When @var{tol} < 0, the estimate is indicated by the +## index of the singular value that has the largest +## logarithmic gap to its successor. Default value is 0. +## +## @item 'rcond' +## The tolerance to be used for estimating the rank of +## matrices. If the user sets @var{rcond} > 0, the given value +## of @var{rcond} is used as a lower bound for the reciprocal +## condition number; an m-by-n matrix whose estimated +## condition number is less than 1/@var{rcond} is considered to +## be of full rank. If the user sets @var{rcond} <= 0, then an +## implicitly computed, default tolerance, defined by +## @var{rcond} = m*n*@var{eps}, is used instead, where @var{eps} is the +## relative machine precision. Default value is 0. +## +## @item 'confirm' +## Specifies whether or not the user's confirmation of the +## system order estimate is desired, as follows: +## @table @var +## @item true +## User's confirmation. +## @item false +## No confirmation. Default value. +## @end table +## +## @item 'noise' +## The desired type of noise input channels. +## @table @var +## @item 'n' +## No error inputs. Default value. +## @iftex +## @tex +## $$ x_{k+1} = A x_k + B u_k $$ +## $$ y_k = C x_k + D u_k $$ +## @end tex +## @end iftex +## @ifnottex +## @example +## x[k+1] = A x[k] + B u[k] +## y[k] = C x[k] + D u[k] +## @end example +## @end ifnottex +## +## @item 'e' +## Return @var{sys} as a (p-by-m+p) state-space model with +## both measured input channels u and noise channels e +## with covariance matrix @var{Ry}. +## @iftex +## @tex +## $$ x_{k+1} = A x_k + B u_k + K e_k $$ +## $$ y_k = C x_k + D u_k + e_k $$ +## @end tex +## @end iftex +## @ifnottex +## @example +## x[k+1] = A x[k] + B u[k] + K e[k] +## y[k] = C x[k] + D u[k] + e[k] +## @end example +## @end ifnottex +## +## @item 'v' +## Return @var{sys} as a (p-by-m+p) state-space model with +## both measured input channels u and white noise channels v +## with identity covariance matrix. +## @iftex +## @tex +## $$ x_{k+1} = A x_k + B u_k + K L v_k $$ +## $$ y_k = C x_k + D u_k + L v_k $$ +## $$ e = L v, \\ L L^T = R_y $$ +## @end tex +## @end iftex +## @ifnottex +## @example +## x[k+1] = A x[k] + B u[k] + K L v[k] +## y[k] = C x[k] + D u[k] + L v[k] +## e = L v, L L' = Ry +## @end example +## @end ifnottex +## +## @item 'k' +## Return @var{sys} as a Kalman predictor for simulation. +## @iftex +## @tex +## $$ \\widehat{x}_{k+1} = A \\widehat{x}_k + B u_k + K (y_k - \\widehat{y}_k) $$ +## $$ \\widehat{y}_k = C \\widehat{x}_k + D u_k $$ +## @end tex +## @end iftex +## @ifnottex +## @example +## ^ ^ ^ +## x[k+1] = A x[k] + B u[k] + K(y[k] - y[k]) +## ^ ^ +## y[k] = C x[k] + D u[k] +## @end example +## @end ifnottex +## +## @iftex +## @tex +## $$ \\widehat{x}_{k+1} = (A-KC) \\widehat{x}_k + (B-KD) u_k + K y_k $$ +## $$ \\widehat{y}_k = C \\widehat{x}_k + D u_k + 0 y_k $$ +## @end tex +## @end iftex +## @ifnottex +## @example +## ^ ^ +## x[k+1] = (A-KC) x[k] + (B-KD) u[k] + K y[k] +## ^ ^ +## y[k] = C x[k] + D u[k] + 0 y[k] +## @end example +## @end ifnottex +## @end table +## @end table +## +## +## @strong{Algorithm}@* +## Uses SLICOT IB01AD, IB01BD and IB01CD by courtesy of +## @uref{http://www.slicot.org, NICONET e.V.} +## ## @end deftypefn ## Author: Lukas Reichlin <luk...@gm...> Modified: trunk/octave-forge/extra/control-devel/inst/n4sid.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/n4sid.m 2012-08-04 13:50:51 UTC (rev 10817) +++ trunk/octave-forge/extra/control-devel/inst/n4sid.m 2012-08-04 18:10:11 UTC (rev 10818) @@ -22,6 +22,205 @@ ## @deftypefnx {Function File} {[@var{sys}, @var{x0}, @var{info}] =} n4sid (@var{dat}, @var{n}, @var{opt}, @dots{}) ## Estimate state-space model using @acronym{N4SID} algorithm. ## @acronym{N4SID}: Numerical algorithm for Subspace State Space System IDentification. +## If no output arguments are given, the singular values are +## plotted on the screen in order to estimate the system order. +## +## @strong{Inputs} +## @table @var +## @item dat +## iddata set containing the measurements, i.e. time-domain signals. +## @item n +## The desired order of the resulting state-space system @var{sys}. +## If not specified, @var{n} is chosen automatically according +## to the singular values and tolerances. +## @item @dots{} +## Optional pairs of keys and values. @code{'key1', value1, 'key2', value2}. +## @item opt +## Optional struct with keys as field names. +## Struct @var{opt} can be created directly or +## by command @command{options}. @code{opt.key1 = value1, opt.key2 = value2}. +## @end table +## +## +## @strong{Outputs} +## @table @var +## @item sys +## Discrete-time state-space model. +## @item x0 +## Initial state vector. If @var{dat} is a multi-experiment dataset, +## @var{x0} becomes a cell vector containing an initial state vector +## for each experiment. +## @item info +## Struct containing additional information. +## @table @var +## @item info.K +## Kalman gain matrix. +## @item info.Q +## State covariance matrix. +## @item info.Ry +## Output covariance matrix. +## @item info.S +## State-output cross-covariance matrix. +## @item info.L +## Noise variance matrix factor. LL'=Ry. +## @end table +## @end table +## +## +## +## @strong{Option Keys and Values} +## @table @var +## @item 'n' +## The desired order of the resulting state-space system @var{sys}. +## @var{s} > @var{n} > 0. +## +## @item 's' +## The number of block rows @var{s} in the input and output +## block Hankel matrices to be processed. @var{s} > 0. +## In the MOESP theory, @var{s} should be larger than @var{n}, +## the estimated dimension of state vector. +## +## @item 'alg', 'algorithm' +## Specifies the algorithm for computing the triangular +## factor R, as follows: +## @table @var +## @item 'C' +## Cholesky algorithm applied to the correlation +## matrix of the input-output data. Default method. +## @item 'F' +## Fast QR algorithm. +## @item 'Q' +## QR algorithm applied to the concatenated block +## Hankel matrices. +## @end table +## +## @item 'tol' +## Absolute tolerance used for determining an estimate of +## the system order. If @var{tol} >= 0, the estimate is +## indicated by the index of the last singular value greater +## than or equal to @var{tol}. (Singular values less than @var{tol} +## are considered as zero.) When @var{tol} = 0, an internally +## computed default value, @var{tol} = @var{s}*@var{eps}*SV(1), is used, +## where SV(1) is the maximal singular value, and @var{eps} is +## the relative machine precision. +## When @var{tol} < 0, the estimate is indicated by the +## index of the singular value that has the largest +## logarithmic gap to its successor. Default value is 0. +## +## @item 'rcond' +## The tolerance to be used for estimating the rank of +## matrices. If the user sets @var{rcond} > 0, the given value +## of @var{rcond} is used as a lower bound for the reciprocal +## condition number; an m-by-n matrix whose estimated +## condition number is less than 1/@var{rcond} is considered to +## be of full rank. If the user sets @var{rcond} <= 0, then an +## implicitly computed, default tolerance, defined by +## @var{rcond} = m*n*@var{eps}, is used instead, where @var{eps} is the +## relative machine precision. Default value is 0. +## +## @item 'confirm' +## Specifies whether or not the user's confirmation of the +## system order estimate is desired, as follows: +## @table @var +## @item true +## User's confirmation. +## @item false +## No confirmation. Default value. +## @end table +## +## @item 'noise' +## The desired type of noise input channels. +## @table @var +## @item 'n' +## No error inputs. Default value. +## @iftex +## @tex +## $$ x_{k+1} = A x_k + B u_k $$ +## $$ y_k = C x_k + D u_k $$ +## @end tex +## @end iftex +## @ifnottex +## @example +## x[k+1] = A x[k] + B u[k] +## y[k] = C x[k] + D u[k] +## @end example +## @end ifnottex +## +## @item 'e' +## Return @var{sys} as a (p-by-m+p) state-space model with +## both measured input channels u and noise channels e +## with covariance matrix @var{Ry}. +## @iftex +## @tex +## $$ x_{k+1} = A x_k + B u_k + K e_k $$ +## $$ y_k = C x_k + D u_k + e_k $$ +## @end tex +## @end iftex +## @ifnottex +## @example +## x[k+1] = A x[k] + B u[k] + K e[k] +## y[k] = C x[k] + D u[k] + e[k] +## @end example +## @end ifnottex +## +## @item 'v' +## Return @var{sys} as a (p-by-m+p) state-space model with +## both measured input channels u and white noise channels v +## with identity covariance matrix. +## @iftex +## @tex +## $$ x_{k+1} = A x_k + B u_k + K L v_k $$ +## $$ y_k = C x_k + D u_k + L v_k $$ +## $$ e = L v, \\ L L^T = R_y $$ +## @end tex +## @end iftex +## @ifnottex +## @example +## x[k+1] = A x[k] + B u[k] + K L v[k] +## y[k] = C x[k] + D u[k] + L v[k] +## e = L v, L L' = Ry +## @end example +## @end ifnottex +## +## @item 'k' +## Return @var{sys} as a Kalman predictor for simulation. +## @iftex +## @tex +## $$ \\widehat{x}_{k+1} = A \\widehat{x}_k + B u_k + K (y_k - \\widehat{y}_k) $$ +## $$ \\widehat{y}_k = C \\widehat{x}_k + D u_k $$ +## @end tex +## @end iftex +## @ifnottex +## @example +## ^ ^ ^ +## x[k+1] = A x[k] + B u[k] + K(y[k] - y[k]) +## ^ ^ +## y[k] = C x[k] + D u[k] +## @end example +## @end ifnottex +## +## @iftex +## @tex +## $$ \\widehat{x}_{k+1} = (A-KC) \\widehat{x}_k + (B-KD) u_k + K y_k $$ +## $$ \\widehat{y}_k = C \\widehat{x}_k + D u_k + 0 y_k $$ +## @end tex +## @end iftex +## @ifnottex +## @example +## ^ ^ +## x[k+1] = (A-KC) x[k] + (B-KD) u[k] + K y[k] +## ^ ^ +## y[k] = C x[k] + D u[k] + 0 y[k] +## @end example +## @end ifnottex +## @end table +## @end table +## +## +## @strong{Algorithm}@* +## Uses SLICOT IB01AD, IB01BD and IB01CD by courtesy of +## @uref{http://www.slicot.org, NICONET e.V.} +## ## @end deftypefn ## Author: Lukas Reichlin <luk...@gm...> Modified: trunk/octave-forge/extra/control-devel/inst/test_devel.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/test_devel.m 2012-08-04 13:50:51 UTC (rev 10817) +++ trunk/octave-forge/extra/control-devel/inst/test_devel.m 2012-08-04 18:10:11 UTC (rev 10818) @@ -1,3 +1,44 @@ +## Copyright (C) 2012 Lukas F. Reichlin +## +## This file is part of LTI Syncope. +## +## LTI Syncope is free software: you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation, either version 3 of the License, or +## (at your option) any later version. +## +## LTI Syncope is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with LTI Syncope. If not, see <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Script File} {} test_devel +## Execute all available tests at once. +## The Octave control-devel package is based on the @uref{http://www.slicot.org, SLICOT} library. +## SLICOT needs a LAPACK library which is also a prerequisite for Octave itself. +## In case of failing test, it is highly recommended to use +## @uref{http://www.netlib.org/lapack/, Netlib's reference LAPACK} +## for building Octave. Using ATLAS may lead to sign changes +## in some entries in the state-space matrices. +## In general, these sign changes are not 'wrong' and can be regarded as +## the result of state transformations. Such state transformations +## (but not input/output transformations) have no influence on the +## input-output behaviour of the system. For better numerics, +## the control package uses such transformations by default when +## calculating the frequency responses and a few other things. +## However, arguments like the Hankel singular Values (HSV) must not change. +## Differing HSVs and failing algorithms are known for using Framework Accelerate +## from Mac OS X 10.7. +## @end deftypefn + +## Author: Lukas Reichlin <luk...@gm...> +## Created: May 2010 +## Version: 0.1 + ## identification test @iddata/iddata test @iddata/cat This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-08-14 19:32:06
|
Revision: 10864 http://octave.svn.sourceforge.net/octave/?rev=10864&view=rev Author: paramaniac Date: 2012-08-14 19:32:00 +0000 (Tue, 14 Aug 2012) Log Message: ----------- control-devel: rename key Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m trunk/octave-forge/extra/control-devel/inst/moen4.m trunk/octave-forge/extra/control-devel/inst/moesp.m trunk/octave-forge/extra/control-devel/inst/n4sid.m Modified: trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m 2012-08-14 18:55:38 UTC (rev 10863) +++ trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m 2012-08-14 19:32:00 UTC (rev 10864) @@ -115,8 +115,7 @@ rcond = val; case "confirm" conf = logical (val); - case "noise" - ## FIXME: find a more speaking name than 'noise' for this option + case {"input", "inputs"} noise = val; otherwise warning ("%s: invalid property name '%s' ignored", method, key); Modified: trunk/octave-forge/extra/control-devel/inst/moen4.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/moen4.m 2012-08-14 18:55:38 UTC (rev 10863) +++ trunk/octave-forge/extra/control-devel/inst/moen4.m 2012-08-14 19:32:00 UTC (rev 10864) @@ -129,7 +129,7 @@ ## No confirmation. Default value. ## @end table ## -## @item 'noise' +## @item 'input' ## The desired type of noise input channels. ## @table @var ## @item 'n' Modified: trunk/octave-forge/extra/control-devel/inst/moesp.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/moesp.m 2012-08-14 18:55:38 UTC (rev 10863) +++ trunk/octave-forge/extra/control-devel/inst/moesp.m 2012-08-14 19:32:00 UTC (rev 10864) @@ -128,7 +128,7 @@ ## No confirmation. Default value. ## @end table ## -## @item 'noise' +## @item 'input' ## The desired type of noise input channels. ## @table @var ## @item 'n' Modified: trunk/octave-forge/extra/control-devel/inst/n4sid.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/n4sid.m 2012-08-14 18:55:38 UTC (rev 10863) +++ trunk/octave-forge/extra/control-devel/inst/n4sid.m 2012-08-14 19:32:00 UTC (rev 10864) @@ -128,7 +128,7 @@ ## No confirmation. Default value. ## @end table ## -## @item 'noise' +## @item 'input' ## The desired type of noise input channels. ## @table @var ## @item 'n' This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |