From: <par...@us...> - 2011-12-15 19:45:59
|
Revision: 9394 http://octave.svn.sourceforge.net/octave/?rev=9394&view=rev Author: paramaniac Date: 2011-12-15 19:45:53 +0000 (Thu, 15 Dec 2011) Log Message: ----------- control-devel: remove duplicate key names Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/__conred_sb16ad__.m trunk/octave-forge/extra/control-devel/inst/__modred_ab09id__.m trunk/octave-forge/extra/control-devel/inst/bstmodred.m trunk/octave-forge/extra/control-devel/inst/cfconred.m trunk/octave-forge/extra/control-devel/inst/fwcfconred.m trunk/octave-forge/extra/control-devel/inst/hnamodred.m Modified: trunk/octave-forge/extra/control-devel/inst/__conred_sb16ad__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__conred_sb16ad__.m 2011-12-15 19:07:45 UTC (rev 9393) +++ trunk/octave-forge/extra/control-devel/inst/__conred_sb16ad__.m 2011-12-15 19:45:53 UTC (rev 9394) @@ -120,7 +120,7 @@ case "alpha" alpha = __modred_check_alpha__ (val, dt); - case "approach" + case "method" switch (tolower (val)) case "sr" bf = false; Modified: trunk/octave-forge/extra/control-devel/inst/__modred_ab09id__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__modred_ab09id__.m 2011-12-15 19:07:45 UTC (rev 9393) +++ trunk/octave-forge/extra/control-devel/inst/__modred_ab09id__.m 2011-12-15 19:45:53 UTC (rev 9394) @@ -103,7 +103,7 @@ case "alpha" alpha = __modred_check_alpha__ (val, dt); - case "approach" + case "method" switch (tolower (val)) case "sr" bf = false; Modified: trunk/octave-forge/extra/control-devel/inst/bstmodred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/bstmodred.m 2011-12-15 19:07:45 UTC (rev 9393) +++ trunk/octave-forge/extra/control-devel/inst/bstmodred.m 2011-12-15 19:45:53 UTC (rev 9394) @@ -154,7 +154,7 @@ ## @var{nr} can be further reduced to ensure that ## @code{HSV(NR-NU) > HSV(NR+1-NU)}. ## -## @item "method", "approx", "approach" +## @item "method" ## Approximation method for the H-infinity norm. ## Valid values corresponding to this key are: ## @table @var @@ -291,7 +291,7 @@ endif beta = val; - case {"method", "approx", "approach"} # approximation method + case "method" # approximation method switch (tolower (val)) case {"sr-bta", "b"} # 'B': use the square-root Balance & Truncate method job = 0; Modified: trunk/octave-forge/extra/control-devel/inst/cfconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/cfconred.m 2011-12-15 19:07:45 UTC (rev 9393) +++ trunk/octave-forge/extra/control-devel/inst/cfconred.m 2011-12-15 19:45:53 UTC (rev 9394) @@ -65,7 +65,7 @@ ## The desired order of the resulting reduced order controller @var{Kr}. ## If not specified, @var{ncr} is chosen automatically. ## -## @item "method", "approx", "approach" +## @item "method" ## Order reduction approach to be used as follows: ## @table @var ## @item "sr-bta", "b" @@ -206,7 +206,7 @@ error ("cfconred: '%s' is an invalid coprime factorization", val); endswitch - case {"method", "approach", "approx"} # approximation method + case "method" # approximation method switch (tolower (val)) case {"sr-bta", "b"} # 'B': use the square-root Balance & Truncate method jobmr = 0; Modified: trunk/octave-forge/extra/control-devel/inst/fwcfconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/fwcfconred.m 2011-12-15 19:07:45 UTC (rev 9393) +++ trunk/octave-forge/extra/control-devel/inst/fwcfconred.m 2011-12-15 19:45:53 UTC (rev 9394) @@ -65,12 +65,12 @@ ## The desired order of the resulting reduced order controller @var{Kr}. ## If not specified, @var{ncr} is chosen automatically. ## -## @item "method", "approx", "approach" +## @item "method" ## Order reduction approach to be used as follows: ## @table @var -## @item "sr", "sr-bta", "b" +## @item "sr", "b" ## Use the square-root Balance & Truncate method. -## @item "bfsr", "bfsr-bta", "f" +## @item "bfsr", "f" ## Use the balancing-free square-root Balance & Truncate method. Default method. ## @end table ## @@ -187,7 +187,7 @@ error ("cfconred: '%s' is an invalid coprime factorization", val); endswitch - case {"method", "approach", "approx"} # approximation method + case "method" # approximation method switch (tolower (val)) case {"sr-bta", "b", "sr"} # 'B': use the square-root Balance & Truncate method jobmr = 0; Modified: trunk/octave-forge/extra/control-devel/inst/hnamodred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/hnamodred.m 2011-12-15 19:07:45 UTC (rev 9393) +++ trunk/octave-forge/extra/control-devel/inst/hnamodred.m 2011-12-15 19:45:53 UTC (rev 9394) @@ -111,7 +111,7 @@ ## If not specified, @var{nr} is the sum of NU and the number of ## Hankel singular values greater than @code{MAX(TOL1,NS*EPS*HNORM(As,Bs,Cs))}; ## -## @item "method", "approach" +## @item "method" ## Specifies the computational approach to be used. ## Valid values corresponding to this key are: ## @table @var @@ -245,7 +245,7 @@ case "alpha" alpha = __modred_check_alpha__ (val, dt); - case {"method", "approach", "jobinv"} + case "method" switch (tolower (val(1))) case {"d", "n"} # "descriptor" jobinv = 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2011-12-15 21:19:48
|
Revision: 9398 http://octave.svn.sourceforge.net/octave/?rev=9398&view=rev Author: paramaniac Date: 2011-12-15 21:19:41 +0000 (Thu, 15 Dec 2011) Log Message: ----------- control: describe key/value pairs (3) Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/btaconred.m trunk/octave-forge/extra/control-devel/inst/spaconred.m Modified: trunk/octave-forge/extra/control-devel/inst/btaconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/btaconred.m 2011-12-15 21:14:45 UTC (rev 9397) +++ trunk/octave-forge/extra/control-devel/inst/btaconred.m 2011-12-15 21:19:41 UTC (rev 9398) @@ -60,6 +60,77 @@ ## @end table ## @end table ## +## @strong{Option Keys and Values} +## @table @var +## @item "order", "ncr" +## The desired order of the resulting reduced order controller @var{Kr}. +## If not specified, @var{ncr} is chosen automatically. +## +## @item "method" +## Order reduction approach to be used as follows: +## @table @var +## @item "sr", "b" +## Use the square-root Balance & Truncate method. +## @item "bfsr", "f" +## Use the balancing-free square-root Balance & Truncate method. Default method. +## @end table +## +## @item "weight" +## Specifies the type of frequency-weighting as follows: +## @table @var +## @item "none" +## No weightings are used (V = I, W = I). Default value. +## @item "left", "output" +## Use stability enforcing left (output) weighting +## @example +## -1 +## V = (I-G*K) *G , (W = I) +## @end example +## @item "right", "input" +## Use stability enforcing right (input) weighting +## @example +## -1 +## W = (I-G*K) *G , (V = I) +## @end example +## @item "both", "performance" +## Use stability and performance enforcing weightings +## @example +## -1 -1 +## V = (I-G*K) *G , W = (I-G*K) +## @end example +## @end table +## +## @item "alpha" +## Specifies the ALPHA-stability boundary for the eigenvalues +## of the state dynamics matrix @var{K.A}. For a continuous-time +## controller, ALPHA <= 0 is the boundary value for +## the real parts of eigenvalues, while for a discrete-time +## controller, 0 <= ALPHA <= 1 represents the +## boundary value for the moduli of eigenvalues. +## The ALPHA-stability domain does not include the boundary. +## Default value is 0 for continuous-time controllers and +## 1 for discrete-time controllers. +## +## @item "tol1" +## If @var{"order"} is not specified, @var{tol1} contains the tolerance for +## determining the order of the reduced controller. +## For model reduction, the recommended value of @var{tol1} is +## c*info.hsvc(1), where c lies in the interval [0.00001, 0.001]. +## If @var{"order"} is specified, the value of @var{tol1} is ignored. +## +## @item "tol2" +## The tolerance for determining the order of a minimal +## realization of the ALPHA-stable part of the given +## controller. TOL2 <= TOL1. +## If not specified, ncs*eps*info.hsvc(1) is chosen. +## +## @item "equil", "scale" +## Boolean indicating whether equilibration (scaling) should be +## performed on @var{G} and @var{K} prior to order reduction. +## Default value is false if both @code{G.scaled == true, K.scaled == true} +## and true otherwise. +## @end table +## ## @strong{Algorithm}@* ## Uses SLICOT SB16AD by courtesy of ## @uref{http://www.slicot.org, NICONET e.V.} Modified: trunk/octave-forge/extra/control-devel/inst/spaconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/spaconred.m 2011-12-15 21:14:45 UTC (rev 9397) +++ trunk/octave-forge/extra/control-devel/inst/spaconred.m 2011-12-15 21:19:41 UTC (rev 9398) @@ -60,6 +60,77 @@ ## @end table ## @end table ## +## @strong{Option Keys and Values} +## @table @var +## @item "order", "ncr" +## The desired order of the resulting reduced order controller @var{Kr}. +## If not specified, @var{ncr} is chosen automatically. +## +## @item "method" +## Order reduction approach to be used as follows: +## @table @var +## @item "sr", "s" +## Use the square-root Singular Perturbation Approximation method. +## @item "bfsr", "p" +## Use the balancing-free square-root Singular Perturbation Approximation method. Default method. +## @end table +## +## @item "weight" +## Specifies the type of frequency-weighting as follows: +## @table @var +## @item "none" +## No weightings are used (V = I, W = I). Default value. +## @item "left", "output" +## Use stability enforcing left (output) weighting +## @example +## -1 +## V = (I-G*K) *G , (W = I) +## @end example +## @item "right", "input" +## Use stability enforcing right (input) weighting +## @example +## -1 +## W = (I-G*K) *G , (V = I) +## @end example +## @item "both", "performance" +## Use stability and performance enforcing weightings +## @example +## -1 -1 +## V = (I-G*K) *G , W = (I-G*K) +## @end example +## @end table +## +## @item "alpha" +## Specifies the ALPHA-stability boundary for the eigenvalues +## of the state dynamics matrix @var{K.A}. For a continuous-time +## controller, ALPHA <= 0 is the boundary value for +## the real parts of eigenvalues, while for a discrete-time +## controller, 0 <= ALPHA <= 1 represents the +## boundary value for the moduli of eigenvalues. +## The ALPHA-stability domain does not include the boundary. +## Default value is 0 for continuous-time controllers and +## 1 for discrete-time controllers. +## +## @item "tol1" +## If @var{"order"} is not specified, @var{tol1} contains the tolerance for +## determining the order of the reduced controller. +## For model reduction, the recommended value of @var{tol1} is +## c*info.hsvc(1), where c lies in the interval [0.00001, 0.001]. +## If @var{"order"} is specified, the value of @var{tol1} is ignored. +## +## @item "tol2" +## The tolerance for determining the order of a minimal +## realization of the ALPHA-stable part of the given +## controller. TOL2 <= TOL1. +## If not specified, ncs*eps*info.hsvc(1) is chosen. +## +## @item "equil", "scale" +## Boolean indicating whether equilibration (scaling) should be +## performed on @var{G} and @var{K} prior to order reduction. +## Default value is false if both @code{G.scaled == true, K.scaled == true} +## and true otherwise. +## @end table +## ## @strong{Algorithm}@* ## Uses SLICOT SB16AD by courtesy of ## @uref{http://www.slicot.org, NICONET e.V.} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2011-12-15 21:49:16
|
Revision: 9401 http://octave.svn.sourceforge.net/octave/?rev=9401&view=rev Author: paramaniac Date: 2011-12-15 21:49:10 +0000 (Thu, 15 Dec 2011) Log Message: ----------- control: describe key/value pairs (4) Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/__modred_ab09id__.m trunk/octave-forge/extra/control-devel/inst/btamodred.m trunk/octave-forge/extra/control-devel/inst/spamodred.m Modified: trunk/octave-forge/extra/control-devel/inst/__modred_ab09id__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__modred_ab09id__.m 2011-12-15 21:30:02 UTC (rev 9400) +++ trunk/octave-forge/extra/control-devel/inst/__modred_ab09id__.m 2011-12-15 21:49:10 UTC (rev 9401) @@ -85,10 +85,10 @@ key = lower (varargin{k}); val = varargin{k+1}; switch (key) - case {"left", "v"} + case {"left", "output", "v"} [av, bv, cv, dv, jobv] = __modred_check_weight__ (val, dt, p, []); - case {"right", "w"} + case {"right", "input", "w"} [aw, bw, cw, dw, jobw] = __modred_check_weight__ (val, dt, [], m); case {"order", "n", "nr"} Modified: trunk/octave-forge/extra/control-devel/inst/btamodred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/btamodred.m 2011-12-15 21:30:02 UTC (rev 9400) +++ trunk/octave-forge/extra/control-devel/inst/btamodred.m 2011-12-15 21:49:10 UTC (rev 9401) @@ -101,6 +101,61 @@ ## @end table ## @end table ## +## +## @strong{Option Keys and Values} +## @table @var +## @item "order", "nr" +## The desired order of the resulting reduced order system @var{Gr}. +## If not specified, @var{nr} is chosen automatically. +## +## @item "left", "output" +## LTI model of the left/output frequency weighting. +## Default value is an identity matrix. +## +## @item "right", "input" +## LTI model of the right/input frequency weighting. +## Default value is an identity matrix. +## +## @item "method" +## Order reduction approach to be used as follows: +## @table @var +## @item "sr", "b" +## Use the square-root Balance & Truncate method. +## @item "bfsr", "f" +## Use the balancing-free square-root Balance & Truncate method. Default method. +## @end table +## +## @item "alpha" +## Specifies the ALPHA-stability boundary for the eigenvalues +## of the state dynamics matrix @var{G.A}. For a continuous-time +## system, ALPHA <= 0 is the boundary value for +## the real parts of eigenvalues, while for a discrete-time +## system, 0 <= ALPHA <= 1 represents the +## boundary value for the moduli of eigenvalues. +## The ALPHA-stability domain does not include the boundary. +## Default value is 0 for continuous-time systems and +## 1 for discrete-time systems. +## +## @item "tol1" +## If @var{"order"} is not specified, @var{tol1} contains the tolerance for +## determining the order of the reduced model. +## For model reduction, the recommended value of @var{tol1} is +## c*info.hsv(1), where c lies in the interval [0.00001, 0.001]. +## If @var{"order"} is specified, the value of @var{tol1} is ignored. +## +## @item "tol2" +## The tolerance for determining the order of a minimal +## realization of the ALPHA-stable part of the given +## model. TOL2 <= TOL1. +## If not specified, ns*eps*info.hsv(1) is chosen. +## +## @item "equil", "scale" +## Boolean indicating whether equilibration (scaling) should be +## performed on system @var{G} prior to order reduction. +## Default value is true if @code{G.scaled == false} and +## false if @code{G.scaled == true}. +## @end table +## ## @strong{Algorithm}@* ## Uses SLICOT AB09ID by courtesy of ## @uref{http://www.slicot.org, NICONET e.V.} Modified: trunk/octave-forge/extra/control-devel/inst/spamodred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/spamodred.m 2011-12-15 21:30:02 UTC (rev 9400) +++ trunk/octave-forge/extra/control-devel/inst/spamodred.m 2011-12-15 21:49:10 UTC (rev 9401) @@ -61,6 +61,61 @@ ## @end table ## @end table ## +## +## @strong{Option Keys and Values} +## @table @var +## @item "order", "nr" +## The desired order of the resulting reduced order system @var{Gr}. +## If not specified, @var{nr} is chosen automatically. +## +## @item "left", "output" +## LTI model of the left/output frequency weighting. +## Default value is an identity matrix. +## +## @item "right", "input" +## LTI model of the right/input frequency weighting. +## Default value is an identity matrix. +## +## @item "method" +## Order reduction approach to be used as follows: +## @table @var +## @item "sr", "s" +## Use the square-root Singular Perturbation Approximation method. +## @item "bfsr", "p" +## Use the balancing-free square-root Singular Perturbation Approximation method. Default method. +## @end table +## +## @item "alpha" +## Specifies the ALPHA-stability boundary for the eigenvalues +## of the state dynamics matrix @var{G.A}. For a continuous-time +## system, ALPHA <= 0 is the boundary value for +## the real parts of eigenvalues, while for a discrete-time +## system, 0 <= ALPHA <= 1 represents the +## boundary value for the moduli of eigenvalues. +## The ALPHA-stability domain does not include the boundary. +## Default value is 0 for continuous-time systems and +## 1 for discrete-time systems. +## +## @item "tol1" +## If @var{"order"} is not specified, @var{tol1} contains the tolerance for +## determining the order of the reduced model. +## For model reduction, the recommended value of @var{tol1} is +## c*info.hsv(1), where c lies in the interval [0.00001, 0.001]. +## If @var{"order"} is specified, the value of @var{tol1} is ignored. +## +## @item "tol2" +## The tolerance for determining the order of a minimal +## realization of the ALPHA-stable part of the given +## model. TOL2 <= TOL1. +## If not specified, ns*eps*info.hsv(1) is chosen. +## +## @item "equil", "scale" +## Boolean indicating whether equilibration (scaling) should be +## performed on system @var{G} prior to order reduction. +## Default value is true if @code{G.scaled == false} and +## false if @code{G.scaled == true}. +## @end table +## ## @strong{Algorithm}@* ## Uses SLICOT AB09ID by courtesy of ## @uref{http://www.slicot.org, NICONET e.V.} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2011-12-16 06:49:49
|
Revision: 9406 http://octave.svn.sourceforge.net/octave/?rev=9406&view=rev Author: paramaniac Date: 2011-12-16 06:49:42 +0000 (Fri, 16 Dec 2011) Log Message: ----------- control-devel: unify variable name Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/bstmodred.m trunk/octave-forge/extra/control-devel/inst/hnamodred.m Modified: trunk/octave-forge/extra/control-devel/inst/bstmodred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/bstmodred.m 2011-12-15 23:00:23 UTC (rev 9405) +++ trunk/octave-forge/extra/control-devel/inst/bstmodred.m 2011-12-16 06:49:42 UTC (rev 9406) @@ -227,13 +227,13 @@ ## Created: October 2011 ## Version: 0.1 -function [sysr, info] = bstmodred (sys, varargin) +function [Gr, info] = bstmodred (G, varargin) if (nargin == 0) print_usage (); endif - if (! isa (sys, "lti")) + if (! isa (G, "lti")) error ("bstmodred: first argument must be an LTI system"); endif @@ -256,8 +256,8 @@ error ("bstmodred: keys and values must come in pairs"); endif - [a, b, c, d, tsam, scaled] = ssdata (sys); - dt = isdt (sys); + [a, b, c, d, tsam, scaled] = ssdata (G); + dt = isdt (G); ## default arguments alpha = __modred_default_alpha__ (dt); @@ -318,7 +318,7 @@ tol1, tol2); ## assemble reduced order model - sysr = ss (ar, br, cr, dr, tsam); + Gr = ss (ar, br, cr, dr, tsam); ## assemble info struct n = rows (a); Modified: trunk/octave-forge/extra/control-devel/inst/hnamodred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/hnamodred.m 2011-12-15 23:00:23 UTC (rev 9405) +++ trunk/octave-forge/extra/control-devel/inst/hnamodred.m 2011-12-16 06:49:42 UTC (rev 9406) @@ -152,13 +152,13 @@ ## Created: October 2011 ## Version: 0.1 -function [sysr, info] = hnamodred (sys, varargin) +function [Gr, info] = hnamodred (G, varargin) if (nargin == 0) print_usage (); endif - if (! isa (sys, "lti")) + if (! isa (G, "lti")) error ("hnamodred: first argument must be an LTI system"); endif @@ -181,9 +181,9 @@ error ("hnamodred: keys and values must come in pairs"); endif - [a, b, c, d, tsam, scaled] = ssdata (sys); - [p, m] = size (sys); - dt = isdt (sys); + [a, b, c, d, tsam, scaled] = ssdata (G); + [p, m] = size (G); + dt = isdt (G); ## default arguments alpha = __modred_default_alpha__ (dt); @@ -273,7 +273,7 @@ jobinv, tol1, tol2); ## assemble reduced order model - sysr = ss (ar, br, cr, dr, tsam); + Gr = ss (ar, br, cr, dr, tsam); ## assemble info struct n = rows (a); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2011-12-16 10:00:19
|
Revision: 9408 http://octave.svn.sourceforge.net/octave/?rev=9408&view=rev Author: paramaniac Date: 2011-12-16 10:00:12 +0000 (Fri, 16 Dec 2011) Log Message: ----------- control-devel: use single quotes in texinfo strings Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/bstmodred.m trunk/octave-forge/extra/control-devel/inst/btaconred.m trunk/octave-forge/extra/control-devel/inst/btamodred.m trunk/octave-forge/extra/control-devel/inst/cfconred.m trunk/octave-forge/extra/control-devel/inst/fwcfconred.m trunk/octave-forge/extra/control-devel/inst/hnamodred.m trunk/octave-forge/extra/control-devel/inst/spaconred.m trunk/octave-forge/extra/control-devel/inst/spamodred.m Modified: trunk/octave-forge/extra/control-devel/inst/bstmodred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/bstmodred.m 2011-12-16 07:21:08 UTC (rev 9407) +++ trunk/octave-forge/extra/control-devel/inst/bstmodred.m 2011-12-16 10:00:12 UTC (rev 9408) @@ -113,7 +113,7 @@ ## @item nr ## The desired order of the resulting reduced order system @var{Gr}. ## If not specified, @var{nr} is chosen automatically according -## to the description of key @var{"order"}. +## to the description of key @var{'order'}. ## @item @dots{} ## Optional pairs of keys and values. @code{"key1", value1, "key2", value2}. ## @item opt @@ -147,28 +147,28 @@ ## ## @strong{Option Keys and Values} ## @table @var -## @item "order", "nr" +## @item 'order', 'nr' ## The desired order of the resulting reduced order system @var{Gr}. ## If not specified, @var{nr} is the sum of NU and the number of ## Hankel singular values greater than @code{MAX(TOL1,NS*EPS)}; ## @var{nr} can be further reduced to ensure that ## @code{HSV(NR-NU) > HSV(NR+1-NU)}. ## -## @item "method" +## @item 'method' ## Approximation method for the H-infinity norm. ## Valid values corresponding to this key are: ## @table @var -## @item "sr-bta", "b" +## @item 'sr-bta', 'b' ## Use the square-root Balance & Truncate method. -## @item "bfsr-bta", "f" +## @item 'bfsr-bta', 'f' ## Use the balancing-free square-root Balance & Truncate method. Default method. -## @item "sr-spa", "s" +## @item 'sr-spa', 's' ## Use the square-root Singular Perturbation Approximation method. -## @item "bfsr-spa", "p" +## @item 'bfsr-spa', 'p' ## Use the balancing-free square-root Singular Perturbation Approximation method. ## @end table ## -## @item "alpha" +## @item 'alpha' ## Specifies the ALPHA-stability boundary for the eigenvalues ## of the state dynamics matrix @var{G.A}. For a continuous-time ## system, ALPHA <= 0 is the boundary value for @@ -179,7 +179,7 @@ ## Default value is 0 for continuous-time systems and ## 1 for discrete-time systems. ## -## @item "beta" +## @item 'beta' ## Use @code{[G, beta*I]} as new system @var{G} to combine ## absolute and relative error methods. ## BETA > 0 specifies the absolute/relative error weighting @@ -192,8 +192,8 @@ ## the feedthrough matrice must not be rank-deficient. ## Default value is 0. ## -## @item "tol1" -## If @var{"order"} is not specified, @var{tol1} contains the tolerance for +## @item 'tol1' +## If @var{'order'} is not specified, @var{tol1} contains the tolerance for ## determining the order of reduced system. ## For model reduction, the recommended value of @var{tol1} lies ## in the interval [0.00001, 0.001]. @var{tol1} < 1. @@ -201,17 +201,17 @@ ## @var{tol1} = NS*EPS, where NS is the number of ## ALPHA-stable eigenvalues of A and EPS is the machine ## precision. -## If @var{"order"} is specified, the value of @var{tol1} is ignored. +## If @var{'order'} is specified, the value of @var{tol1} is ignored. ## -## @item "tol2" +## @item 'tol2' ## The tolerance for determining the order of a minimal ## realization of the phase system (see METHOD) corresponding ## to the ALPHA-stable part of the given system. ## The recommended value is TOL2 = NS*EPS. TOL2 <= TOL1 < 1. -## This value is used by default if @var{"tol2"} is not specified +## This value is used by default if @var{'tol2'} is not specified ## or if TOL2 <= 0 on entry. ## -## @item "equil", "scale" +## @item 'equil', 'scale' ## Boolean indicating whether equilibration (scaling) should be ## performed on system @var{G} prior to order reduction. ## Default value is true if @code{G.scaled == false} and Modified: trunk/octave-forge/extra/control-devel/inst/btaconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/btaconred.m 2011-12-16 07:21:08 UTC (rev 9407) +++ trunk/octave-forge/extra/control-devel/inst/btaconred.m 2011-12-16 10:00:12 UTC (rev 9408) @@ -34,7 +34,7 @@ ## @item ncr ## The desired order of the resulting reduced order controller @var{Kr}. ## If not specified, @var{ncr} is chosen automatically according -## to the description of key @var{"order"}. +## to the description of key @var{'order'}. ## @item @dots{} ## Optional pairs of keys and values. @code{"key1", value1, "key2", value2}. ## @item opt @@ -62,37 +62,37 @@ ## ## @strong{Option Keys and Values} ## @table @var -## @item "order", "ncr" +## @item 'order', 'ncr' ## The desired order of the resulting reduced order controller @var{Kr}. ## If not specified, @var{ncr} is chosen automatically. ## -## @item "method" +## @item 'method' ## Order reduction approach to be used as follows: ## @table @var -## @item "sr", "b" +## @item 'sr', 'b' ## Use the square-root Balance & Truncate method. -## @item "bfsr", "f" +## @item 'bfsr', 'f' ## Use the balancing-free square-root Balance & Truncate method. Default method. ## @end table ## -## @item "weight" +## @item 'weight' ## Specifies the type of frequency-weighting as follows: ## @table @var -## @item "none" +## @item 'none' ## No weightings are used (V = I, W = I). Default value. -## @item "left", "output" +## @item 'left', 'output' ## Use stability enforcing left (output) weighting ## @example ## -1 ## V = (I-G*K) *G , (W = I) ## @end example -## @item "right", "input" +## @item 'right', 'input' ## Use stability enforcing right (input) weighting ## @example ## -1 ## W = (I-G*K) *G , (V = I) ## @end example -## @item "both", "performance" +## @item 'both', 'performance' ## Use stability and performance enforcing weightings ## @example ## -1 -1 @@ -100,7 +100,7 @@ ## @end example ## @end table ## -## @item "alpha" +## @item 'alpha' ## Specifies the ALPHA-stability boundary for the eigenvalues ## of the state dynamics matrix @var{K.A}. For a continuous-time ## controller, ALPHA <= 0 is the boundary value for @@ -111,20 +111,20 @@ ## Default value is 0 for continuous-time controllers and ## 1 for discrete-time controllers. ## -## @item "tol1" -## If @var{"order"} is not specified, @var{tol1} contains the tolerance for +## @item 'tol1' +## If @var{'order'} is not specified, @var{tol1} contains the tolerance for ## determining the order of the reduced controller. ## For model reduction, the recommended value of @var{tol1} is ## c*info.hsvc(1), where c lies in the interval [0.00001, 0.001]. -## If @var{"order"} is specified, the value of @var{tol1} is ignored. +## If @var{'order'} is specified, the value of @var{tol1} is ignored. ## -## @item "tol2" +## @item 'tol2' ## The tolerance for determining the order of a minimal ## realization of the ALPHA-stable part of the given ## controller. TOL2 <= TOL1. ## If not specified, ncs*eps*info.hsvc(1) is chosen. ## -## @item "equil", "scale" +## @item 'equil', 'scale' ## Boolean indicating whether equilibration (scaling) should be ## performed on @var{G} and @var{K} prior to order reduction. ## Default value is false if both @code{G.scaled == true, K.scaled == true} Modified: trunk/octave-forge/extra/control-devel/inst/btamodred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/btamodred.m 2011-12-16 07:21:08 UTC (rev 9407) +++ trunk/octave-forge/extra/control-devel/inst/btamodred.m 2011-12-16 10:00:12 UTC (rev 9408) @@ -70,7 +70,7 @@ ## @item nr ## The desired order of the resulting reduced order system @var{Gr}. ## If not specified, @var{nr} is chosen automatically according -## to the description of key @var{"order"}. +## to the description of key @var{'order'}. ## @item @dots{} ## Optional pairs of keys and values. @code{"key1", value1, "key2", value2}. ## @item opt @@ -104,28 +104,28 @@ ## ## @strong{Option Keys and Values} ## @table @var -## @item "order", "nr" +## @item 'order', 'nr' ## The desired order of the resulting reduced order system @var{Gr}. ## If not specified, @var{nr} is chosen automatically. ## -## @item "left", "output" +## @item 'left', 'output' ## LTI model of the left/output frequency weighting. ## Default value is an identity matrix. ## -## @item "right", "input" +## @item 'right', 'input' ## LTI model of the right/input frequency weighting. ## Default value is an identity matrix. ## -## @item "method" +## @item 'method' ## Order reduction approach to be used as follows: ## @table @var -## @item "sr", "b" +## @item 'sr', 'b' ## Use the square-root Balance & Truncate method. -## @item "bfsr", "f" +## @item 'bfsr', 'f' ## Use the balancing-free square-root Balance & Truncate method. Default method. ## @end table ## -## @item "alpha" +## @item 'alpha' ## Specifies the ALPHA-stability boundary for the eigenvalues ## of the state dynamics matrix @var{G.A}. For a continuous-time ## system, ALPHA <= 0 is the boundary value for @@ -136,20 +136,20 @@ ## Default value is 0 for continuous-time systems and ## 1 for discrete-time systems. ## -## @item "tol1" -## If @var{"order"} is not specified, @var{tol1} contains the tolerance for +## @item 'tol1' +## If @var{'order'} is not specified, @var{tol1} contains the tolerance for ## determining the order of the reduced model. ## For model reduction, the recommended value of @var{tol1} is ## c*info.hsv(1), where c lies in the interval [0.00001, 0.001]. -## If @var{"order"} is specified, the value of @var{tol1} is ignored. +## If @var{'order'} is specified, the value of @var{tol1} is ignored. ## -## @item "tol2" +## @item 'tol2' ## The tolerance for determining the order of a minimal ## realization of the ALPHA-stable part of the given ## model. TOL2 <= TOL1. ## If not specified, ns*eps*info.hsv(1) is chosen. ## -## @item "equil", "scale" +## @item 'equil', 'scale' ## Boolean indicating whether equilibration (scaling) should be ## performed on system @var{G} prior to order reduction. ## Default value is true if @code{G.scaled == false} and Modified: trunk/octave-forge/extra/control-devel/inst/cfconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/cfconred.m 2011-12-16 07:21:08 UTC (rev 9407) +++ trunk/octave-forge/extra/control-devel/inst/cfconred.m 2011-12-16 10:00:12 UTC (rev 9408) @@ -35,7 +35,7 @@ ## @item ncr ## The desired order of the resulting reduced order controller @var{Kr}. ## If not specified, @var{ncr} is chosen automatically according -## to the description of key @var{"order"}. +## to the description of key @var{'order'}. ## @item @dots{} ## Optional pairs of keys and values. @code{"key1", value1, "key2", value2}. ## @item opt @@ -61,47 +61,47 @@ ## ## @strong{Option Keys and Values} ## @table @var -## @item "order", "ncr" +## @item 'order', 'ncr' ## The desired order of the resulting reduced order controller @var{Kr}. ## If not specified, @var{ncr} is chosen automatically. ## -## @item "method" +## @item 'method' ## Order reduction approach to be used as follows: ## @table @var -## @item "sr-bta", "b" +## @item 'sr-bta', 'b' ## Use the square-root Balance & Truncate method. -## @item "bfsr-bta", "f" +## @item 'bfsr-bta', 'f' ## Use the balancing-free square-root Balance & Truncate method. Default method. -## @item "sr-spa", "s" +## @item 'sr-spa', 's' ## Use the square-root Singular Perturbation Approximation method. -## @item "bfsr-spa", "p" +## @item 'bfsr-spa', 'p' ## Use the balancing-free square-root Singular Perturbation Approximation method. ## @end table ## -## @item "cf" +## @item 'cf' ## Specifies whether left or right coprime factorization is ## to be used as follows: ## @table @var -## @item "left", "l" +## @item 'left', 'l' ## Use left coprime factorization. Default method. -## @item "right", "r" +## @item 'right', 'r' ## Use right coprime factorization. ## @end table ## -## @item "tol1" -## If @var{"order"} is not specified, @var{tol1} contains the tolerance for +## @item 'tol1' +## If @var{'order'} is not specified, @var{tol1} contains the tolerance for ## determining the order of the reduced system. ## For model reduction, the recommended value of @var{tol1} is ## c*info.hsv(1), where c lies in the interval [0.00001, 0.001]. -## If @var{"order"} is specified, the value of @var{tol1} is ignored. +## If @var{'order'} is specified, the value of @var{tol1} is ignored. ## -## @item "tol2" +## @item 'tol2' ## The tolerance for determining the order of a minimal ## realization of the coprime factorization controller. ## TOL2 <= TOL1. ## If not specified, n*eps*info.hsv(1) is chosen. ## -## @item "equil", "scale" +## @item 'equil', 'scale' ## Boolean indicating whether equilibration (scaling) should be ## performed on system @var{G} prior to order reduction. ## Default value is true if @code{G.scaled == false} and Modified: trunk/octave-forge/extra/control-devel/inst/fwcfconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/fwcfconred.m 2011-12-16 07:21:08 UTC (rev 9407) +++ trunk/octave-forge/extra/control-devel/inst/fwcfconred.m 2011-12-16 10:00:12 UTC (rev 9408) @@ -35,7 +35,7 @@ ## @item ncr ## The desired order of the resulting reduced order controller @var{Kr}. ## If not specified, @var{ncr} is chosen automatically according -## to the description of key @var{"order"}. +## to the description of key @var{'order'}. ## @item @dots{} ## Optional pairs of keys and values. @code{"key1", value1, "key2", value2}. ## @item opt @@ -61,35 +61,35 @@ ## ## @strong{Option Keys and Values} ## @table @var -## @item "order", "ncr" +## @item 'order', 'ncr' ## The desired order of the resulting reduced order controller @var{Kr}. ## If not specified, @var{ncr} is chosen automatically. ## -## @item "method" +## @item 'method' ## Order reduction approach to be used as follows: ## @table @var -## @item "sr", "b" +## @item 'sr', 'b' ## Use the square-root Balance & Truncate method. -## @item "bfsr", "f" +## @item 'bfsr', 'f' ## Use the balancing-free square-root Balance & Truncate method. Default method. ## @end table ## -## @item "cf" +## @item 'cf' ## Specifies whether left or right coprime factorization is ## to be used as follows: ## @table @var -## @item "left", "l" +## @item 'left', 'l' ## Use left coprime factorization. Default method. -## @item "right", "r" +## @item 'right', 'r' ## Use right coprime factorization. ## @end table ## -## @item "tol1" -## If @var{"order"} is not specified, @var{tol1} contains the tolerance for +## @item 'tol1' +## If @var{'order'} is not specified, @var{tol1} contains the tolerance for ## determining the order of the reduced system. ## For model reduction, the recommended value of @var{tol1} is ## c*info.hsv(1), where c lies in the interval [0.00001, 0.001]. -## If @var{"order"} is specified, the value of @var{tol1} is ignored. +## If @var{'order'} is specified, the value of @var{tol1} is ignored. ## @end table ## ## @strong{Algorithm}@* Modified: trunk/octave-forge/extra/control-devel/inst/hnamodred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/hnamodred.m 2011-12-16 07:21:08 UTC (rev 9407) +++ trunk/octave-forge/extra/control-devel/inst/hnamodred.m 2011-12-16 10:00:12 UTC (rev 9408) @@ -106,26 +106,34 @@ ## ## @strong{Option Keys and Values} ## @table @var -## @item "order", "nr" +## @item 'order', 'nr' ## The desired order of the resulting reduced order system @var{Gr}. ## If not specified, @var{nr} is the sum of NU and the number of ## Hankel singular values greater than @code{MAX(TOL1,NS*EPS*HNORM(As,Bs,Cs))}; ## -## @item "method" +## @item 'method' ## Specifies the computational approach to be used. ## Valid values corresponding to this key are: ## @table @var -## @item "descriptor" +## @item 'descriptor' ## Use the inverse free descriptor system approach. -## @item "standard" +## @item 'standard' ## Use the inversion based standard approach. -## @item "auto" +## @item 'auto' ## Switch automatically to the inverse free ## descriptor approach in case of badly conditioned ## feedthrough matrices in V or W. Default method. ## @end table ## -## @item "alpha" +## @item 'left', 'output' +## LTI model of the left/output frequency weighting. +## Default value is an identity matrix. +## +## @item 'right', 'input' +## LTI model of the right/input frequency weighting. +## Default value is an identity matrix. +## +## @item 'alpha' ## Specifies the ALPHA-stability boundary for the eigenvalues ## of the state dynamics matrix @var{G.A}. For a continuous-time ## system, ALPHA <= 0 is the boundary value for @@ -136,7 +144,7 @@ ## Default value is 0 for continuous-time systems and ## 1 for discrete-time systems. ## -## @item "equil", "scale" +## @item 'equil', 'scale' ## Boolean indicating whether equilibration (scaling) should be ## performed on system @var{G} prior to order reduction. ## Default value is true if @code{G.scaled == false} and Modified: trunk/octave-forge/extra/control-devel/inst/spaconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/spaconred.m 2011-12-16 07:21:08 UTC (rev 9407) +++ trunk/octave-forge/extra/control-devel/inst/spaconred.m 2011-12-16 10:00:12 UTC (rev 9408) @@ -34,7 +34,7 @@ ## @item ncr ## The desired order of the resulting reduced order controller @var{Kr}. ## If not specified, @var{ncr} is chosen automatically according -## to the description of key @var{"order"}. +## to the description of key @var{'order'}. ## @item @dots{} ## Optional pairs of keys and values. @code{"key1", value1, "key2", value2}. ## @item opt @@ -62,37 +62,37 @@ ## ## @strong{Option Keys and Values} ## @table @var -## @item "order", "ncr" +## @item 'order', 'ncr' ## The desired order of the resulting reduced order controller @var{Kr}. ## If not specified, @var{ncr} is chosen automatically. ## -## @item "method" +## @item 'method' ## Order reduction approach to be used as follows: ## @table @var -## @item "sr", "s" +## @item 'sr', 's' ## Use the square-root Singular Perturbation Approximation method. -## @item "bfsr", "p" +## @item 'bfsr', 'p' ## Use the balancing-free square-root Singular Perturbation Approximation method. Default method. ## @end table ## -## @item "weight" +## @item 'weight' ## Specifies the type of frequency-weighting as follows: ## @table @var -## @item "none" +## @item 'none' ## No weightings are used (V = I, W = I). Default value. -## @item "left", "output" +## @item 'left', 'output' ## Use stability enforcing left (output) weighting ## @example ## -1 ## V = (I-G*K) *G , (W = I) ## @end example -## @item "right", "input" +## @item 'right', 'input' ## Use stability enforcing right (input) weighting ## @example ## -1 ## W = (I-G*K) *G , (V = I) ## @end example -## @item "both", "performance" +## @item 'both', 'performance' ## Use stability and performance enforcing weightings ## @example ## -1 -1 @@ -100,7 +100,7 @@ ## @end example ## @end table ## -## @item "alpha" +## @item 'alpha' ## Specifies the ALPHA-stability boundary for the eigenvalues ## of the state dynamics matrix @var{K.A}. For a continuous-time ## controller, ALPHA <= 0 is the boundary value for @@ -111,20 +111,20 @@ ## Default value is 0 for continuous-time controllers and ## 1 for discrete-time controllers. ## -## @item "tol1" -## If @var{"order"} is not specified, @var{tol1} contains the tolerance for +## @item 'tol1' +## If @var{'order'} is not specified, @var{tol1} contains the tolerance for ## determining the order of the reduced controller. ## For model reduction, the recommended value of @var{tol1} is ## c*info.hsvc(1), where c lies in the interval [0.00001, 0.001]. -## If @var{"order"} is specified, the value of @var{tol1} is ignored. +## If @var{'order'} is specified, the value of @var{tol1} is ignored. ## -## @item "tol2" +## @item 'tol2' ## The tolerance for determining the order of a minimal ## realization of the ALPHA-stable part of the given ## controller. TOL2 <= TOL1. ## If not specified, ncs*eps*info.hsvc(1) is chosen. ## -## @item "equil", "scale" +## @item 'equil', 'scale' ## Boolean indicating whether equilibration (scaling) should be ## performed on @var{G} and @var{K} prior to order reduction. ## Default value is false if both @code{G.scaled == true, K.scaled == true} Modified: trunk/octave-forge/extra/control-devel/inst/spamodred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/spamodred.m 2011-12-16 07:21:08 UTC (rev 9407) +++ trunk/octave-forge/extra/control-devel/inst/spamodred.m 2011-12-16 10:00:12 UTC (rev 9408) @@ -30,7 +30,7 @@ ## @item nr ## The desired order of the resulting reduced order system @var{Gr}. ## If not specified, @var{nr} is chosen automatically according -## to the description of key @var{"order"}. +## to the description of key @var{'order'}. ## @item @dots{} ## Optional pairs of keys and values. @code{"key1", value1, "key2", value2}. ## @item opt @@ -64,28 +64,28 @@ ## ## @strong{Option Keys and Values} ## @table @var -## @item "order", "nr" +## @item 'order', 'nr' ## The desired order of the resulting reduced order system @var{Gr}. ## If not specified, @var{nr} is chosen automatically. ## -## @item "left", "output" +## @item 'left', 'output' ## LTI model of the left/output frequency weighting. ## Default value is an identity matrix. ## -## @item "right", "input" +## @item 'right', 'input' ## LTI model of the right/input frequency weighting. ## Default value is an identity matrix. ## -## @item "method" +## @item 'method' ## Order reduction approach to be used as follows: ## @table @var -## @item "sr", "s" +## @item 'sr', 's' ## Use the square-root Singular Perturbation Approximation method. -## @item "bfsr", "p" +## @item 'bfsr', 'p' ## Use the balancing-free square-root Singular Perturbation Approximation method. Default method. ## @end table ## -## @item "alpha" +## @item 'alpha' ## Specifies the ALPHA-stability boundary for the eigenvalues ## of the state dynamics matrix @var{G.A}. For a continuous-time ## system, ALPHA <= 0 is the boundary value for @@ -96,20 +96,20 @@ ## Default value is 0 for continuous-time systems and ## 1 for discrete-time systems. ## -## @item "tol1" -## If @var{"order"} is not specified, @var{tol1} contains the tolerance for +## @item 'tol1' +## If @var{'order'} is not specified, @var{tol1} contains the tolerance for ## determining the order of the reduced model. ## For model reduction, the recommended value of @var{tol1} is ## c*info.hsv(1), where c lies in the interval [0.00001, 0.001]. -## If @var{"order"} is specified, the value of @var{tol1} is ignored. +## If @var{'order'} is specified, the value of @var{tol1} is ignored. ## -## @item "tol2" +## @item 'tol2' ## The tolerance for determining the order of a minimal ## realization of the ALPHA-stable part of the given ## model. TOL2 <= TOL1. ## If not specified, ns*eps*info.hsv(1) is chosen. ## -## @item "equil", "scale" +## @item 'equil', 'scale' ## Boolean indicating whether equilibration (scaling) should be ## performed on system @var{G} prior to order reduction. ## Default value is true if @code{G.scaled == false} and This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2011-12-18 15:43:26
|
Revision: 9430 http://octave.svn.sourceforge.net/octave/?rev=9430&view=rev Author: paramaniac Date: 2011-12-18 15:43:20 +0000 (Sun, 18 Dec 2011) Log Message: ----------- control-devel: work on docstrings Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/btaconred.m trunk/octave-forge/extra/control-devel/inst/btamodred.m trunk/octave-forge/extra/control-devel/inst/cfconred.m trunk/octave-forge/extra/control-devel/inst/fwcfconred.m trunk/octave-forge/extra/control-devel/inst/spaconred.m trunk/octave-forge/extra/control-devel/inst/spamodred.m Modified: trunk/octave-forge/extra/control-devel/inst/btaconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/btaconred.m 2011-12-18 12:20:14 UTC (rev 9429) +++ trunk/octave-forge/extra/control-devel/inst/btaconred.m 2011-12-18 15:43:20 UTC (rev 9430) @@ -64,7 +64,8 @@ ## @table @var ## @item 'order', 'ncr' ## The desired order of the resulting reduced order controller @var{Kr}. -## If not specified, @var{ncr} is chosen automatically. +## If not specified, @var{ncr} is chosen automatically such that states with +## Hankel singular values @var{info.hsvc} > @var{tol1} are retained. ## ## @item 'method' ## Order reduction approach to be used as follows: @@ -116,6 +117,7 @@ ## determining the order of the reduced controller. ## For model reduction, the recommended value of @var{tol1} is ## c*info.hsvc(1), where c lies in the interval [0.00001, 0.001]. +## Default value is info.ncs*eps*info.hsvc(1). ## If @var{'order'} is specified, the value of @var{tol1} is ignored. ## ## @item 'tol2' Modified: trunk/octave-forge/extra/control-devel/inst/btamodred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/btamodred.m 2011-12-18 12:20:14 UTC (rev 9429) +++ trunk/octave-forge/extra/control-devel/inst/btamodred.m 2011-12-18 15:43:20 UTC (rev 9430) @@ -106,7 +106,8 @@ ## @table @var ## @item 'order', 'nr' ## The desired order of the resulting reduced order system @var{Gr}. -## If not specified, @var{nr} is chosen automatically. +## If not specified, @var{nr} is chosen automatically such that states with +## Hankel singular values @var{info.hsv} > @var{tol1} are retained. ## ## @item 'left', 'output' ## LTI model of the left/output frequency weighting. @@ -141,6 +142,7 @@ ## determining the order of the reduced model. ## For model reduction, the recommended value of @var{tol1} is ## c*info.hsv(1), where c lies in the interval [0.00001, 0.001]. +## Default value is info.ns*eps*info.hsv(1). ## If @var{'order'} is specified, the value of @var{tol1} is ignored. ## ## @item 'tol2' Modified: trunk/octave-forge/extra/control-devel/inst/cfconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/cfconred.m 2011-12-18 12:20:14 UTC (rev 9429) +++ trunk/octave-forge/extra/control-devel/inst/cfconred.m 2011-12-18 15:43:20 UTC (rev 9430) @@ -63,7 +63,8 @@ ## @table @var ## @item 'order', 'ncr' ## The desired order of the resulting reduced order controller @var{Kr}. -## If not specified, @var{ncr} is chosen automatically. +## If not specified, @var{ncr} is chosen automatically such that states with +## Hankel singular values @var{info.hsv} > @var{tol1} are retained. ## ## @item 'method' ## Order reduction approach to be used as follows: @@ -93,6 +94,7 @@ ## determining the order of the reduced system. ## For model reduction, the recommended value of @var{tol1} is ## c*info.hsv(1), where c lies in the interval [0.00001, 0.001]. +## Default value is n*eps*info.hsv(1). ## If @var{'order'} is specified, the value of @var{tol1} is ignored. ## ## @item 'tol2' Modified: trunk/octave-forge/extra/control-devel/inst/fwcfconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/fwcfconred.m 2011-12-18 12:20:14 UTC (rev 9429) +++ trunk/octave-forge/extra/control-devel/inst/fwcfconred.m 2011-12-18 15:43:20 UTC (rev 9430) @@ -63,7 +63,8 @@ ## @table @var ## @item 'order', 'ncr' ## The desired order of the resulting reduced order controller @var{Kr}. -## If not specified, @var{ncr} is chosen automatically. +## If not specified, @var{ncr} is chosen automatically such that states with +## Hankel singular values @var{info.hsv} > @var{tol1} are retained. ## ## @item 'method' ## Order reduction approach to be used as follows: @@ -89,6 +90,7 @@ ## determining the order of the reduced system. ## For model reduction, the recommended value of @var{tol1} is ## c*info.hsv(1), where c lies in the interval [0.00001, 0.001]. +## Default value is n*eps*info.hsv(1). ## If @var{'order'} is specified, the value of @var{tol1} is ignored. ## @end table ## Modified: trunk/octave-forge/extra/control-devel/inst/spaconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/spaconred.m 2011-12-18 12:20:14 UTC (rev 9429) +++ trunk/octave-forge/extra/control-devel/inst/spaconred.m 2011-12-18 15:43:20 UTC (rev 9430) @@ -64,7 +64,8 @@ ## @table @var ## @item 'order', 'ncr' ## The desired order of the resulting reduced order controller @var{Kr}. -## If not specified, @var{ncr} is chosen automatically. +## If not specified, @var{ncr} is chosen automatically such that states with +## Hankel singular values @var{info.hsvc} > @var{tol1} are retained. ## ## @item 'method' ## Order reduction approach to be used as follows: @@ -116,6 +117,7 @@ ## determining the order of the reduced controller. ## For model reduction, the recommended value of @var{tol1} is ## c*info.hsvc(1), where c lies in the interval [0.00001, 0.001]. +## Default value is info.ncs*eps*info.hsvc(1). ## If @var{'order'} is specified, the value of @var{tol1} is ignored. ## ## @item 'tol2' Modified: trunk/octave-forge/extra/control-devel/inst/spamodred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/spamodred.m 2011-12-18 12:20:14 UTC (rev 9429) +++ trunk/octave-forge/extra/control-devel/inst/spamodred.m 2011-12-18 15:43:20 UTC (rev 9430) @@ -66,7 +66,8 @@ ## @table @var ## @item 'order', 'nr' ## The desired order of the resulting reduced order system @var{Gr}. -## If not specified, @var{nr} is chosen automatically. +## If not specified, @var{nr} is chosen automatically such that states with +## Hankel singular values @var{info.hsv} > @var{tol1} are retained. ## ## @item 'left', 'output' ## LTI model of the left/output frequency weighting. @@ -101,6 +102,7 @@ ## determining the order of the reduced model. ## For model reduction, the recommended value of @var{tol1} is ## c*info.hsv(1), where c lies in the interval [0.00001, 0.001]. +## Default value is info.ns*eps*info.hsv(1). ## If @var{'order'} is specified, the value of @var{tol1} is ignored. ## ## @item 'tol2' This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2011-12-18 16:02:32
|
Revision: 9431 http://octave.svn.sourceforge.net/octave/?rev=9431&view=rev Author: paramaniac Date: 2011-12-18 16:02:26 +0000 (Sun, 18 Dec 2011) Log Message: ----------- control-devel: check that nr <= n Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/__conred_sb16ad__.m trunk/octave-forge/extra/control-devel/inst/__modred_ab09id__.m trunk/octave-forge/extra/control-devel/inst/__modred_check_order__.m trunk/octave-forge/extra/control-devel/inst/bstmodred.m trunk/octave-forge/extra/control-devel/inst/cfconred.m trunk/octave-forge/extra/control-devel/inst/fwcfconred.m trunk/octave-forge/extra/control-devel/inst/hnamodred.m Modified: trunk/octave-forge/extra/control-devel/inst/__conred_sb16ad__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__conred_sb16ad__.m 2011-12-18 15:43:20 UTC (rev 9430) +++ trunk/octave-forge/extra/control-devel/inst/__conred_sb16ad__.m 2011-12-18 16:02:26 UTC (rev 9431) @@ -109,7 +109,7 @@ endswitch case {"order", "ncr", "nr"} - [ncr, ordsel] = __modred_check_order__ (val); + [ncr, ordsel] = __modred_check_order__ (val, rows (ac)); case "tol1" tol1 = __modred_check_tol__ (val, "tol1"); Modified: trunk/octave-forge/extra/control-devel/inst/__modred_ab09id__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__modred_ab09id__.m 2011-12-18 15:43:20 UTC (rev 9430) +++ trunk/octave-forge/extra/control-devel/inst/__modred_ab09id__.m 2011-12-18 16:02:26 UTC (rev 9431) @@ -92,7 +92,7 @@ [aw, bw, cw, dw, jobw] = __modred_check_weight__ (val, dt, [], m); case {"order", "n", "nr"} - [nr, ordsel] = __modred_check_order__ (val); + [nr, ordsel] = __modred_check_order__ (val, rows (a)); case "tol1" tol1 = __modred_check_tol__ (val, "tol1"); Modified: trunk/octave-forge/extra/control-devel/inst/__modred_check_order__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__modred_check_order__.m 2011-12-18 15:43:20 UTC (rev 9430) +++ trunk/octave-forge/extra/control-devel/inst/__modred_check_order__.m 2011-12-18 16:02:26 UTC (rev 9431) @@ -22,11 +22,15 @@ ## Created: November 2011 ## Version: 0.1 -function [nr, ordsel] = __modred_check_order__ (nr) +function [nr, ordsel] = __modred_check_order__ (nr, n) if (! issample (nr, 0) || nr != round (nr)) error ("modred: order of reduced model must be an integer >= 0"); endif + + if (nr > n) + error ("modred: order of reduced model can't be larger than the original one") + endif ordsel = 0; Modified: trunk/octave-forge/extra/control-devel/inst/bstmodred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/bstmodred.m 2011-12-18 15:43:20 UTC (rev 9430) +++ trunk/octave-forge/extra/control-devel/inst/bstmodred.m 2011-12-18 16:02:26 UTC (rev 9431) @@ -274,7 +274,7 @@ val = varargin{k+1}; switch (key) case {"order", "nr"} - [nr, ordsel] = __modred_check_order__ (val); + [nr, ordsel] = __modred_check_order__ (val, rows (a)); case "tol1" tol1 = __modred_check_tol__ (val, "tol1"); Modified: trunk/octave-forge/extra/control-devel/inst/cfconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/cfconred.m 2011-12-18 15:43:20 UTC (rev 9430) +++ trunk/octave-forge/extra/control-devel/inst/cfconred.m 2011-12-18 16:02:26 UTC (rev 9431) @@ -190,7 +190,7 @@ val = varargin{k+1}; switch (key) case {"order", "ncr", "nr"} - [ncr, ordsel] = __modred_check_order__ (val); + [ncr, ordsel] = __modred_check_order__ (val, n); case "tol1" tol1 = __modred_check_tol__ (val, "tol1"); Modified: trunk/octave-forge/extra/control-devel/inst/fwcfconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/fwcfconred.m 2011-12-18 15:43:20 UTC (rev 9430) +++ trunk/octave-forge/extra/control-devel/inst/fwcfconred.m 2011-12-18 16:02:26 UTC (rev 9431) @@ -173,7 +173,7 @@ val = varargin{k+1}; switch (key) case {"order", "ncr", "nr"} - [ncr, ordsel] = __modred_check_order__ (val); + [ncr, ordsel] = __modred_check_order__ (val, n); case {"tol1", "tol"} tol1 = __modred_check_tol__ (val, "tol1"); Modified: trunk/octave-forge/extra/control-devel/inst/hnamodred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/hnamodred.m 2011-12-18 15:43:20 UTC (rev 9430) +++ trunk/octave-forge/extra/control-devel/inst/hnamodred.m 2011-12-18 16:02:26 UTC (rev 9431) @@ -357,7 +357,7 @@ jobv = 4 case {"order", "nr"} - [nr, ordsel] = __modred_check_order__ (val); + [nr, ordsel] = __modred_check_order__ (val, rows (a)); case "tol1" tol1 = __modred_check_tol__ (val, "tol1"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2011-12-18 19:34:45
|
Revision: 9433 http://octave.svn.sourceforge.net/octave/?rev=9433&view=rev Author: paramaniac Date: 2011-12-18 19:34:39 +0000 (Sun, 18 Dec 2011) Log Message: ----------- control-devel: doc improvements Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/btaconred.m trunk/octave-forge/extra/control-devel/inst/spaconred.m Modified: trunk/octave-forge/extra/control-devel/inst/btaconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/btaconred.m 2011-12-18 16:13:27 UTC (rev 9432) +++ trunk/octave-forge/extra/control-devel/inst/btaconred.m 2011-12-18 19:34:39 UTC (rev 9433) @@ -22,7 +22,25 @@ ## @deftypefnx{Function File} {[@var{Kr}, @var{info}] =} btaconred (@var{G}, @var{K}, @var{ncr}, @var{opt}, @dots{}) ## ## Controller reduction by frequency-weighted Balanced Truncation Approximation (BTA). +## Given a plant @var{G} and a stabilizing controller @var{K}, determine a reduced +## order controller @var{Kr} such that the closed-loop system is stable and closed-loop +## performance is retained. ## +## The algorithm tries to minimize the frequency-weighted error +## @iftex +## @tex +## $$ || V \\ (K - K_r) \\ W ||_{\\infty} = min $$ +## @end tex +## @end iftex +## @ifnottex +## @example +## ||V (K-Kr) W|| = min +## inf +## @end example +## @end ifnottex +## where @var{V} and @var{W} denote output and input weightings. +## +## ## @strong{Inputs} ## @table @var ## @item G @@ -81,24 +99,48 @@ ## @table @var ## @item 'none' ## No weightings are used (V = I, W = I). Default value. +## ## @item 'left', 'output' ## Use stability enforcing left (output) weighting +## @iftex +## @tex +## $$ V = (I - G K)^{-1} G, \\qquad W = I $$ +## @end tex +## @end iftex +## @ifnottex ## @example ## -1 -## V = (I-G*K) *G , (W = I) +## V = (I-G*K) *G , W = I ## @end example +## @end ifnottex +## ## @item 'right', 'input' ## Use stability enforcing right (input) weighting +## @iftex +## @tex +## $$ V = I, \\qquad W = (I - G K)^{-1} G $$ +## @end tex +## @end iftex +## @ifnottex ## @example -## -1 -## W = (I-G*K) *G , (V = I) +## -1 +## V = I , W = (I-G*K) *G ## @end example +## @end ifnottex +## ## @item 'both', 'performance' ## Use stability and performance enforcing weightings +## @iftex +## @tex +## $$ V = (I - G K)^{-1} G, \\qquad W = (I - G K)^{-1} $$ +## @end tex +## @end iftex +## @ifnottex ## @example ## -1 -1 ## V = (I-G*K) *G , W = (I-G*K) ## @end example +## @end ifnottex ## @end table ## ## @item 'alpha' Modified: trunk/octave-forge/extra/control-devel/inst/spaconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/spaconred.m 2011-12-18 16:13:27 UTC (rev 9432) +++ trunk/octave-forge/extra/control-devel/inst/spaconred.m 2011-12-18 19:34:39 UTC (rev 9433) @@ -22,7 +22,25 @@ ## @deftypefnx{Function File} {[@var{Kr}, @var{info}] =} spaconred (@var{G}, @var{K}, @var{ncr}, @var{opt}, @dots{}) ## ## Controller reduction by frequency-weighted Singular Perturbation Approximation (SPA). +## Given a plant @var{G} and a stabilizing controller @var{K}, determine a reduced +## order controller @var{Kr} such that the closed-loop system is stable and closed-loop +## performance is retained. ## +## The algorithm tries to minimize the frequency-weighted error +## @iftex +## @tex +## $$ || V \\ (K - K_r) \\ W ||_{\\infty} = min $$ +## @end tex +## @end iftex +## @ifnottex +## @example +## ||V (K-Kr) W|| = min +## inf +## @end example +## @end ifnottex +## where @var{V} and @var{W} denote output and input weightings. +## +## ## @strong{Inputs} ## @table @var ## @item G @@ -81,24 +99,48 @@ ## @table @var ## @item 'none' ## No weightings are used (V = I, W = I). Default value. +## ## @item 'left', 'output' ## Use stability enforcing left (output) weighting +## @iftex +## @tex +## $$ V = (I - G K)^{-1} G, \\qquad W = I $$ +## @end tex +## @end iftex +## @ifnottex ## @example ## -1 -## V = (I-G*K) *G , (W = I) +## V = (I-G*K) *G , W = I ## @end example +## @end ifnottex +## ## @item 'right', 'input' ## Use stability enforcing right (input) weighting +## @iftex +## @tex +## $$ V = I, \\qquad W = (I - G K)^{-1} G $$ +## @end tex +## @end iftex +## @ifnottex ## @example -## -1 -## W = (I-G*K) *G , (V = I) +## -1 +## V = I , W = (I-G*K) *G ## @end example +## @end ifnottex +## ## @item 'both', 'performance' ## Use stability and performance enforcing weightings +## @iftex +## @tex +## $$ V = (I - G K)^{-1} G, \\qquad W = (I - G K)^{-1} $$ +## @end tex +## @end iftex +## @ifnottex ## @example ## -1 -1 ## V = (I-G*K) *G , W = (I-G*K) ## @end example +## @end ifnottex ## @end table ## ## @item 'alpha' This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2011-12-20 13:40:07
|
Revision: 9436 http://octave.svn.sourceforge.net/octave/?rev=9436&view=rev Author: paramaniac Date: 2011-12-20 13:39:56 +0000 (Tue, 20 Dec 2011) Log Message: ----------- control-devel: enable additional options Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/__conred_sb16ad__.m trunk/octave-forge/extra/control-devel/inst/__modred_ab09id__.m Added Paths: ----------- trunk/octave-forge/extra/control-devel/inst/__modred_check_alpha_gram__.m trunk/octave-forge/extra/control-devel/inst/__modred_check_gram__.m Modified: trunk/octave-forge/extra/control-devel/inst/__conred_sb16ad__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__conred_sb16ad__.m 2011-12-20 12:45:30 UTC (rev 9435) +++ trunk/octave-forge/extra/control-devel/inst/__conred_sb16ad__.m 2011-12-20 13:39:56 UTC (rev 9436) @@ -130,7 +130,11 @@ error ("modred: '%s' is an invalid approach", val); endswitch - ## TODO: jobc, jobo + case {"jobc", "gram-ctrb"} + jobc = __modred_check_gram__ (val, "gram-ctrb"); + + case {"jobo", "gram-obsv"} + jobo = __modred_check_gram__ (val, "gram-obsv"); case {"equil", "equilibrate", "equilibration", "scale", "scaling"} scaled = __modred_check_equil__ (val); Modified: trunk/octave-forge/extra/control-devel/inst/__modred_ab09id__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__modred_ab09id__.m 2011-12-20 12:45:30 UTC (rev 9435) +++ trunk/octave-forge/extra/control-devel/inst/__modred_ab09id__.m 2011-12-20 13:39:56 UTC (rev 9436) @@ -113,8 +113,18 @@ error ("modred: '%s' is an invalid approach", val); endswitch - ## TODO: alphac, alphao, jobc, jobo + case {"jobc", "gram-ctrb"} + jobc = __modred_check_gram__ (val, "gram-ctrb"); + case {"jobo", "gram-obsv"} + jobo = __modred_check_gram__ (val, "gram-obsv"); + + case {"alphac", "alpha-ctrb"} + alphac = __modred_check_alpha_gram__ (val, "alpha-ctrb"); + + case {"alphao", "alpha-obsv"} + alphao = __modred_check_alpha_gram__ (val, "alpha-obsv"); + case {"equil", "equilibrate", "equilibration", "scale", "scaling"} scaled = __modred_check_equil__ (val); Added: trunk/octave-forge/extra/control-devel/inst/__modred_check_alpha_gram__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__modred_check_alpha_gram__.m (rev 0) +++ trunk/octave-forge/extra/control-devel/inst/__modred_check_alpha_gram__.m 2011-12-20 13:39:56 UTC (rev 9436) @@ -0,0 +1,35 @@ +## Copyright (C) 2011 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 -*- +## check alpha for combination methods of grammians + +## Author: Lukas Reichlin <luk...@gm...> +## Created: December 2011 +## Version: 0.1 + +function alpha = __modred_check_alpha_gram__ (alpha, key) + + if (! is_real_scalar (alpha)) + error ("modred: argument '%s' must be a real scalar", key); + endif + + if (abs (alpha) > 1) + error ("modred: require -1 <= %s <= 1", key); + endif + +endfunction Added: trunk/octave-forge/extra/control-devel/inst/__modred_check_gram__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__modred_check_gram__.m (rev 0) +++ trunk/octave-forge/extra/control-devel/inst/__modred_check_gram__.m 2011-12-20 13:39:56 UTC (rev 9436) @@ -0,0 +1,40 @@ +## Copyright (C) 2011 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 -*- +## check choice of frequency-weighted grammians. + +## Author: Lukas Reichlin <luk...@gm...> +## Created: December 2011 +## Version: 0.1 + +function job = __modred_check_gram__ (choice, key) + + if (! ischar (choice)) + error ("modred: key '%s' requires string value", %s); + endif + + switch (tolower (choice (1))) + case "s" # standard + job = 0; + case "e" # enhanced + job = 1; + otherwise + error ("modred: key '%s' has an invalid value", %s); + endswitch + +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...> - 2011-12-20 14:14:38
|
Revision: 9437 http://octave.svn.sourceforge.net/octave/?rev=9437&view=rev Author: paramaniac Date: 2011-12-20 14:14:26 +0000 (Tue, 20 Dec 2011) Log Message: ----------- control-devel: doc for additional options Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/btaconred.m trunk/octave-forge/extra/control-devel/inst/btamodred.m trunk/octave-forge/extra/control-devel/inst/spaconred.m trunk/octave-forge/extra/control-devel/inst/spamodred.m Modified: trunk/octave-forge/extra/control-devel/inst/btaconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/btaconred.m 2011-12-20 13:39:56 UTC (rev 9436) +++ trunk/octave-forge/extra/control-devel/inst/btaconred.m 2011-12-20 14:14:26 UTC (rev 9437) @@ -168,6 +168,28 @@ ## controller. TOL2 <= TOL1. ## If not specified, ncs*eps*info.hsvc(1) is chosen. ## +## @item 'gram-ctrb' +## Specifies the choice of frequency-weighted controllability +## Grammian as follows: +## @table @var +## @item 'standard' +## Choice corresponding to standard Enns' method [1]. Default method. +## @item 'enhanced' +## Choice corresponding to the stability enhanced +## modified Enns' method of [2]. +## @end table +## +## @item 'gram-obsv' +## Specifies the choice of frequency-weighted observability +## Grammian as follows: +## @table @var +## @item 'standard' +## Choice corresponding to standard Enns' method [1]. Default method. +## @item 'enhanced' +## Choice corresponding to the stability enhanced +## modified Enns' method of [2]. +## @end table +## ## @item 'equil', 'scale' ## Boolean indicating whether equilibration (scaling) should be ## performed on @var{G} and @var{K} prior to order reduction. Modified: trunk/octave-forge/extra/control-devel/inst/btamodred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/btamodred.m 2011-12-20 13:39:56 UTC (rev 9436) +++ trunk/octave-forge/extra/control-devel/inst/btamodred.m 2011-12-20 14:14:26 UTC (rev 9437) @@ -151,6 +151,50 @@ ## model. TOL2 <= TOL1. ## If not specified, ns*eps*info.hsv(1) is chosen. ## +## @item 'gram-ctrb' +## Specifies the choice of frequency-weighted controllability +## Grammian as follows: +## @table @var +## @item 'standard' +## Choice corresponding to a combination method [4] +## of the approaches of Enns [1] and Lin-Chiu [2,3]. Default method. +## @item 'enhanced' +## Choice corresponding to the stability enhanced +## modified combination method of [4]. +## @end table +## +## @item 'gram-obsv' +## Specifies the choice of frequency-weighted observability +## Grammian as follows: +## @table @var +## @item 'standard' +## Choice corresponding to a combination method [4] +## of the approaches of Enns [1] and Lin-Chiu [2,3]. Default method. +## @item 'enhanced' +## Choice corresponding to the stability enhanced +## modified combination method of [4]. +## @end table +## +## @item 'alpha-ctrb' +## Combination method parameter for defining the +## frequency-weighted controllability Grammian. +## abs(alphac) <= 1. +## If alphac = 0, the choice of +## Grammian corresponds to the method of Enns [1], while if +## alphac = 1, the choice of Grammian corresponds +## to the method of Lin and Chiu [2,3]. +## Default value is 0. +## +## @item 'alpha-obsv' +## Combination method parameter for defining the +## frequency-weighted observability Grammian. +## abs(alphao) <= 1. +## If alphao = 0, the choice of +## Grammian corresponds to the method of Enns [1], while if +## alphao = 1, the choice of Grammian corresponds +## to the method of Lin and Chiu [2,3]. +## Default value is 0. +## ## @item 'equil', 'scale' ## Boolean indicating whether equilibration (scaling) should be ## performed on system @var{G} prior to order reduction. Modified: trunk/octave-forge/extra/control-devel/inst/spaconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/spaconred.m 2011-12-20 13:39:56 UTC (rev 9436) +++ trunk/octave-forge/extra/control-devel/inst/spaconred.m 2011-12-20 14:14:26 UTC (rev 9437) @@ -168,6 +168,28 @@ ## controller. TOL2 <= TOL1. ## If not specified, ncs*eps*info.hsvc(1) is chosen. ## +## @item 'gram-ctrb' +## Specifies the choice of frequency-weighted controllability +## Grammian as follows: +## @table @var +## @item 'standard' +## Choice corresponding to standard Enns' method [1]. Default method. +## @item 'enhanced' +## Choice corresponding to the stability enhanced +## modified Enns' method of [2]. +## @end table +## +## @item 'gram-obsv' +## Specifies the choice of frequency-weighted observability +## Grammian as follows: +## @table @var +## @item 'standard' +## Choice corresponding to standard Enns' method [1]. Default method. +## @item 'enhanced' +## Choice corresponding to the stability enhanced +## modified Enns' method of [2]. +## @end table +## ## @item 'equil', 'scale' ## Boolean indicating whether equilibration (scaling) should be ## performed on @var{G} and @var{K} prior to order reduction. Modified: trunk/octave-forge/extra/control-devel/inst/spamodred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/spamodred.m 2011-12-20 13:39:56 UTC (rev 9436) +++ trunk/octave-forge/extra/control-devel/inst/spamodred.m 2011-12-20 14:14:26 UTC (rev 9437) @@ -111,6 +111,50 @@ ## model. TOL2 <= TOL1. ## If not specified, ns*eps*info.hsv(1) is chosen. ## +## @item 'gram-ctrb' +## Specifies the choice of frequency-weighted controllability +## Grammian as follows: +## @table @var +## @item 'standard' +## Choice corresponding to a combination method [4] +## of the approaches of Enns [1] and Lin-Chiu [2,3]. Default method. +## @item 'enhanced' +## Choice corresponding to the stability enhanced +## modified combination method of [4]. +## @end table +## +## @item 'gram-obsv' +## Specifies the choice of frequency-weighted observability +## Grammian as follows: +## @table @var +## @item 'standard' +## Choice corresponding to a combination method [4] +## of the approaches of Enns [1] and Lin-Chiu [2,3]. Default method. +## @item 'enhanced' +## Choice corresponding to the stability enhanced +## modified combination method of [4]. +## @end table +## +## @item 'alpha-ctrb' +## Combination method parameter for defining the +## frequency-weighted controllability Grammian. +## abs(alphac) <= 1. +## If alphac = 0, the choice of +## Grammian corresponds to the method of Enns [1], while if +## alphac = 1, the choice of Grammian corresponds +## to the method of Lin and Chiu [2,3]. +## Default value is 0. +## +## @item 'alpha-obsv' +## Combination method parameter for defining the +## frequency-weighted observability Grammian. +## abs(alphao) <= 1. +## If alphao = 0, the choice of +## Grammian corresponds to the method of Enns [1], while if +## alphao = 1, the choice of Grammian corresponds +## to the method of Lin and Chiu [2,3]. +## Default value is 0. +## ## @item 'equil', 'scale' ## Boolean indicating whether equilibration (scaling) should be ## performed on system @var{G} prior to order reduction. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2011-12-21 19:23:28
|
Revision: 9450 http://octave.svn.sourceforge.net/octave/?rev=9450&view=rev Author: paramaniac Date: 2011-12-21 19:23:22 +0000 (Wed, 21 Dec 2011) Log Message: ----------- control-devel: describe key 'feedback' Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/btaconred.m trunk/octave-forge/extra/control-devel/inst/spaconred.m Modified: trunk/octave-forge/extra/control-devel/inst/btaconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/btaconred.m 2011-12-21 15:03:27 UTC (rev 9449) +++ trunk/octave-forge/extra/control-devel/inst/btaconred.m 2011-12-21 19:23:22 UTC (rev 9450) @@ -143,6 +143,15 @@ ## @end ifnottex ## @end table ## +## @item 'feedback' +## Specifies whether @var{K} is a positive or negative feedback controller: +## @table @var +## @item '+' +## Use positive feedback controller. Default value. +## @item '-' +## Use negative feedback controller. +## @end table +## ## @item 'alpha' ## Specifies the ALPHA-stability boundary for the eigenvalues ## of the state dynamics matrix @var{K.A}. For a continuous-time Modified: trunk/octave-forge/extra/control-devel/inst/spaconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/spaconred.m 2011-12-21 15:03:27 UTC (rev 9449) +++ trunk/octave-forge/extra/control-devel/inst/spaconred.m 2011-12-21 19:23:22 UTC (rev 9450) @@ -143,6 +143,15 @@ ## @end ifnottex ## @end table ## +## @item 'feedback' +## Specifies whether @var{K} is a positive or negative feedback controller: +## @table @var +## @item '+' +## Use positive feedback controller. Default value. +## @item '-' +## Use negative feedback controller. +## @end table +## ## @item 'alpha' ## Specifies the ALPHA-stability boundary for the eigenvalues ## of the state dynamics matrix @var{K.A}. For a continuous-time This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2011-12-21 20:59:09
|
Revision: 9454 http://octave.svn.sourceforge.net/octave/?rev=9454&view=rev Author: paramaniac Date: 2011-12-21 20:59:03 +0000 (Wed, 21 Dec 2011) Log Message: ----------- control-devel: add key 'feedback' Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/__conred_sb16ad__.m trunk/octave-forge/extra/control-devel/inst/cfconred.m trunk/octave-forge/extra/control-devel/inst/fwcfconred.m Modified: trunk/octave-forge/extra/control-devel/inst/__conred_sb16ad__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__conred_sb16ad__.m 2011-12-21 20:33:20 UTC (rev 9453) +++ trunk/octave-forge/extra/control-devel/inst/__conred_sb16ad__.m 2011-12-21 20:59:03 UTC (rev 9454) @@ -141,7 +141,7 @@ scaled = __modred_check_equil__ (val); case "feedback" - negfb = __conred_check_feedback_sign__ (val, "feedback"); + negfb = __conred_check_feedback_sign__ (val); otherwise warning ("%sconred: invalid property name '%s' ignored", method, key); Modified: trunk/octave-forge/extra/control-devel/inst/cfconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/cfconred.m 2011-12-21 20:33:20 UTC (rev 9453) +++ trunk/octave-forge/extra/control-devel/inst/cfconred.m 2011-12-21 20:59:03 UTC (rev 9454) @@ -89,6 +89,15 @@ ## Use right coprime factorization. ## @end table ## +## @item 'feedback' +## Specifies whether @var{F} and @var{L} are fed back positively or negatively: +## @table @var +## @item '+' +## A+BK and A+LC are both Hurwitz matrices. +## @item '-' +## A-BK and A-LC are both Hurwitz matrices. Default value. +## @end table +## ## @item 'tol1' ## If @var{'order'} is not specified, @var{tol1} contains the tolerance for ## determining the order of the reduced system. @@ -182,6 +191,7 @@ equil = scaled && scaledc; ordsel = 1; ncr = 0; + negfb = true; # A-BK, A-LC Hurwitz ## handle keys and values @@ -225,17 +235,25 @@ case {"equil", "equilibrate", "equilibration", "scale", "scaling"} equil = __modred_check_equil__ (val); + case "feedback" + negfb = __conred_check_feedback_sign__ (val); + otherwise warning ("cfconred: invalid property name '%s' ignored", key); endswitch endfor + ## A - B*F --> A + B*F ; A - L*C --> A + L*C + if (negfb) + F = -F; + L = -L; + endif + ## perform model order reduction [acr, bcr, ccr, dcr, ncr, hsv] = slsb16bd (a, b, c, d, dt, equil, ncr, ordsel, jobd, jobmr, \ - -F, -L, jobcf, tol1, tol2); - ## A - B*F --> A + B*F ; A - L*C --> A + L*C - + F, L, jobcf, tol1, tol2); + ## assemble reduced order controller Kr = ss (acr, bcr, ccr, dcr, tsam); Modified: trunk/octave-forge/extra/control-devel/inst/fwcfconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/fwcfconred.m 2011-12-21 20:33:20 UTC (rev 9453) +++ trunk/octave-forge/extra/control-devel/inst/fwcfconred.m 2011-12-21 20:59:03 UTC (rev 9454) @@ -85,6 +85,15 @@ ## Use right coprime factorization. Default method. ## @end table ## +## @item 'feedback' +## Specifies whether @var{F} and @var{L} are fed back positively or negatively: +## @table @var +## @item '+' +## A+BK and A+LC are both Hurwitz matrices. +## @item '-' +## A-BK and A-LC are both Hurwitz matrices. Default value. +## @end table +## ## @item 'tol1' ## If @var{'order'} is not specified, @var{tol1} contains the tolerance for ## determining the order of the reduced system. @@ -165,6 +174,7 @@ equil = scaled && scaledc; ordsel = 1; ncr = 0; + negfb = true; # A-BK, A-LC Hurwitz ## handle keys and values @@ -198,16 +208,24 @@ error ("cfconred: '%s' is an invalid approach", val); endswitch + case "feedback" + negfb = __conred_check_feedback_sign__ (val); + otherwise warning ("cfconred: invalid property name '%s' ignored", key); endswitch endfor + ## A - B*F --> A + B*F ; A - L*C --> A + L*C + if (negfb) + F = -F; + L = -L; + endif + ## perform model order reduction [acr, bcr, ccr, ncr, hsv] = slsb16cd (a, b, c, d, dt, ncr, ordsel, jobd, jobmr, \ - -F, -L, jobcf, tol1); - ## A - B*F --> A + B*F ; A - L*C --> A + L*C + F, L, jobcf, tol1); ## assemble reduced order controller Kr = ss (acr, bcr, ccr, [], tsam); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2011-12-22 15:35:11
|
Revision: 9457 http://octave.svn.sourceforge.net/octave/?rev=9457&view=rev Author: paramaniac Date: 2011-12-22 15:35:00 +0000 (Thu, 22 Dec 2011) Log Message: ----------- control-devel: use key 'feedback' for tests instead of negative signs Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/btaconred.m trunk/octave-forge/extra/control-devel/inst/cfconred.m trunk/octave-forge/extra/control-devel/inst/fwcfconred.m Modified: trunk/octave-forge/extra/control-devel/inst/btaconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/btaconred.m 2011-12-22 13:22:04 UTC (rev 9456) +++ trunk/octave-forge/extra/control-devel/inst/btaconred.m 2011-12-22 15:35:00 UTC (rev 9457) @@ -251,7 +251,7 @@ %! %! K = ss (AC, BC, CC, DC, "scaled", true); %! -%! [Kr, Info] = btaconred (G, K, 2, "weight", "input"); +%! [Kr, Info] = btaconred (G, K, 2, "weight", "input", "feedback", "+"); %! [Ao, Bo, Co, Do] = ssdata (Kr); %! %! Ae = [ 9.1900 0.0000 Modified: trunk/octave-forge/extra/control-devel/inst/cfconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/cfconred.m 2011-12-22 13:22:04 UTC (rev 9456) +++ trunk/octave-forge/extra/control-devel/inst/cfconred.m 2011-12-22 15:35:00 UTC (rev 9457) @@ -288,9 +288,9 @@ %! %! G = ss (A, B, C, D); % "scaled", false %! -%! F = -[ 4.4721e-002 6.6105e-001 4.6986e-003 3.6014e-001 1.0325e-001 -3.7541e-002 -4.2685e-002 3.2873e-002 ]; +%! F = [ 4.4721e-002 6.6105e-001 4.6986e-003 3.6014e-001 1.0325e-001 -3.7541e-002 -4.2685e-002 3.2873e-002 ]; %! -%! L = -[ 4.1089e-001 +%! L = [ 4.1089e-001 %! 8.6846e-002 %! 3.8523e-004 %! -3.6194e-003 @@ -299,7 +299,7 @@ %! 1.2349e-003 %! 4.2632e-003 ]; %! -%! [Kr, Info] = cfconred (G, F, L, 4, "method", "bfsr-bta", "cf", "left"); +%! [Kr, Info] = cfconred (G, F, L, 4, "method", "bfsr-bta", "cf", "left", "feedback", "+"); %! [Ao, Bo, Co, Do] = ssdata (Kr); %! %! Ae = [ 0.5946 -0.7336 0.1914 -0.3368 Modified: trunk/octave-forge/extra/control-devel/inst/fwcfconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/fwcfconred.m 2011-12-22 13:22:04 UTC (rev 9456) +++ trunk/octave-forge/extra/control-devel/inst/fwcfconred.m 2011-12-22 15:35:00 UTC (rev 9457) @@ -261,9 +261,9 @@ %! %! G = ss (A, B, C, D); % "scaled", false %! -%! F = -[ 4.472135954999638e-002 6.610515358414598e-001 4.698598960657579e-003 3.601363251422058e-001 1.032530880771415e-001 -3.754055214487997e-002 -4.268536964759344e-002 3.287284547842979e-002 ]; +%! F = [ 4.472135954999638e-002 6.610515358414598e-001 4.698598960657579e-003 3.601363251422058e-001 1.032530880771415e-001 -3.754055214487997e-002 -4.268536964759344e-002 3.287284547842979e-002 ]; %! -%! L = -[ 4.108939884667451e-001 +%! L = [ 4.108939884667451e-001 %! 8.684600000000012e-002 %! 3.852317308197148e-004 %! -3.619366874815911e-003 @@ -272,7 +272,7 @@ %! 1.234944428038507e-003 %! 4.263205617645322e-003 ]; %! -%! [Kr, Info] = fwcfconred (G, F, L, 2, "method", "bfsr", "cf", "right"); +%! [Kr, Info] = fwcfconred (G, F, L, 2, "method", "bfsr", "cf", "right", "feedback", "+"); %! [Ao, Bo, Co, Do] = ssdata (Kr); %! %! Ae = [ -0.4334 0.4884 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2011-12-27 20:42:01
|
Revision: 9470 http://octave.svn.sourceforge.net/octave/?rev=9470&view=rev Author: paramaniac Date: 2011-12-27 20:41:54 +0000 (Tue, 27 Dec 2011) Log Message: ----------- control-devel: doc fixes Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/bstmodred.m trunk/octave-forge/extra/control-devel/inst/btamodred.m trunk/octave-forge/extra/control-devel/inst/cfconred.m trunk/octave-forge/extra/control-devel/inst/fwcfconred.m trunk/octave-forge/extra/control-devel/inst/hnamodred.m trunk/octave-forge/extra/control-devel/inst/spamodred.m Modified: trunk/octave-forge/extra/control-devel/inst/bstmodred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/bstmodred.m 2011-12-26 21:00:43 UTC (rev 9469) +++ trunk/octave-forge/extra/control-devel/inst/bstmodred.m 2011-12-27 20:41:54 UTC (rev 9470) @@ -23,89 +23,25 @@ ## ## Model order reduction by Balanced Stochastic Truncation (BST) method. ## The aim of model reduction is to find an LTI system @var{Gr} of order -## @var{nr} (nr << n) such that the input-output behaviour of @var{Gr} +## @var{nr} (nr < n) such that the input-output behaviour of @var{Gr} ## approximates the one from original system @var{G}. -## This is motivated by the relation +## +## BST is a relative error method which tries to minimize ## @iftex ## @tex -## $$ || y - y_r ||_2 = || G - G_r ||_{\\infty} \\ || u ||_2 $$ +## $$ || G^{-1} (G-G_r) ||_{\\infty} = min $$ ## @end tex ## @end iftex ## @ifnottex ## @example -## ||y-yr|| = ||G-Gr|| ||u|| -## 2 inf 2 +## -1 +## ||G (G-Gr)|| = min +## inf ## @end example ## @end ifnottex ## -## BST is a relative error method which tries to minimize -## @iftex -## @math{|| \\Delta_r ||,} -## @end iftex -## @ifnottex -## Deltar, -## @end ifnottex -## where -## @iftex -## @math{\\Delta_r} -## @end iftex -## @ifnottex -## Deltar -## @end ifnottex -## is implicitly defined by -## @iftex -## @math{G - G_r = \\Delta_r \\ G.} -## @end iftex -## @ifnottex -## G-Gr = Deltar*G. -## @end ifnottex -## For the H-infinity norm, the best approximation problem is -## unsolved so far. Nevertheless, balanced truncation and related -## methods can be used to obtain good approximations using this measure. ## -## Available approximation methods are the accuracy-enhancing square-root (SR) -## or the balancing-free square-root (BFSR) versions of -## the Balance & Truncate (BTA) or Singular Perturbation Approximation (SPA) -## model reduction methods for the ALPHA-stable part of the system. ## -## Unstable models are handled by separating the stable and unstable -## parts additively, applying the model reduction only to the stable -## part and by joining the reduced stable with the original unstable part. -## The order of the reduced system can be selected by the user or -## can be determined automatically on the basis of the computed -## Hankel singular values. -## -## For MIMO models, proper scaling of input-output channels is of -## utmost importance. This can @strong{not} be done by the equilibration -## option or the @command{prescale} command because these perform state -## transformations only. While enhancing numerics, state transformations -## have no influence on the input-output behaviour and the magnitude of -## the corresponding signals. Since the algorithm calculates the -## H-infinity norm of these signals, important behaviour of @var{G} -## could be neglected just because the corresponding signals have smaller -## numbers than those of other, less important effects of @var{G}. -## -## BST is often suitable to perform model reduction in order to obtain -## low order design models for controller synthesis. -## -## Approximation Properties: -## @itemize @bullet -## @item -## Guaranteed stability of reduced models -## @item -## Approximates simultaneously gain and phase -## @item -## Preserves non-minimum phase zeros -## @item -## Guaranteed a priori error bound -## @iftex -## @tex -## $$ || G^{-1} (G-G_r) ||_{\\infty} \\leq 2 \\sum_{j=r+1}^{n} \\frac{1+\\sigma_j}{1-\\sigma_j} - 1 $$ -## @end tex -## @end iftex -## @end itemize -## -## ## @strong{Inputs} ## @table @var ## @item G @@ -218,6 +154,53 @@ ## false if @code{G.scaled == true}. ## @end table ## +## +## For the H-infinity norm, the best approximation problem is +## unsolved so far. Nevertheless, balanced truncation and related +## methods can be used to obtain good approximations using this measure. +## +## Available approximation methods are the accuracy-enhancing square-root (SR) +## or the balancing-free square-root (BFSR) versions of +## the Balance & Truncate (BTA) or Singular Perturbation Approximation (SPA) +## model reduction methods for the ALPHA-stable part of the system. +## +## Unstable models are handled by separating the stable and unstable +## parts additively, applying the model reduction only to the stable +## part and by joining the reduced stable with the original unstable part. +## The order of the reduced system can be selected by the user or +## can be determined automatically on the basis of the computed +## Hankel singular values. +## +## For MIMO models, proper scaling of input-output channels is of +## utmost importance. This can @strong{not} be done by the equilibration +## option or the @command{prescale} command because these perform state +## transformations only. While enhancing numerics, state transformations +## have no influence on the input-output behaviour and the magnitude of +## the corresponding signals. Since the algorithm calculates the +## H-infinity norm of these signals, important behaviour of @var{G} +## could be neglected just because the corresponding signals have smaller +## numbers than those of other, less important effects of @var{G}. +## +## BST is often suitable to perform model reduction in order to obtain +## low order design models for controller synthesis. +## +## Approximation Properties: +## @itemize @bullet +## @item +## Guaranteed stability of reduced models +## @item +## Approximates simultaneously gain and phase +## @item +## Preserves non-minimum phase zeros +## @item +## Guaranteed a priori error bound +## @iftex +## @tex +## $$ || G^{-1} (G-G_r) ||_{\\infty} \\leq 2 \\sum_{j=r+1}^{n} \\frac{1+\\sigma_j}{1-\\sigma_j} - 1 $$ +## @end tex +## @end iftex +## @end itemize +## ## @strong{Algorithm}@* ## Uses SLICOT AB09HD by courtesy of ## @uref{http://www.slicot.org, NICONET e.V.} Modified: trunk/octave-forge/extra/control-devel/inst/btamodred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/btamodred.m 2011-12-26 21:00:43 UTC (rev 9469) +++ trunk/octave-forge/extra/control-devel/inst/btamodred.m 2011-12-27 20:41:54 UTC (rev 9470) @@ -23,14 +23,14 @@ ## ## Model order reduction by frequency weighted Balanced Truncation Approximation (BTA) method. ## The aim of model reduction is to find an LTI system @var{Gr} of order -## @var{nr} (nr << n) such that the input-output behaviour of @var{Gr} +## @var{nr} (nr < n) such that the input-output behaviour of @var{Gr} ## approximates the one from original system @var{G}. ## ## BTA is an absolute error method which tries to minimize ## @iftex ## @tex ## $$ || G - G_r ||_{\\infty} = min $$ -## $$ || W_o \\ (G - G_r) \\ W_i ||_{\\infty} = min $$ +## $$ || V \\ (G - G_r) \\ W ||_{\\infty} = min $$ ## @end tex ## @end iftex ## @ifnottex @@ -38,31 +38,13 @@ ## ||G-Gr|| = min ## inf ## -## ||Wo (G-Gr) Wi|| = min -## inf +## ||V (G-Gr) W|| = min +## inf ## @end example ## @end ifnottex -## where @var{Wo} and @var{Wi} denote output and input weightings. +## where @var{V} and @var{W} denote output and input weightings. ## -## UNSTABLE (from bstmodred) ## -## MIMO (from bstmodred) -## -## Approximation Properties: -## @itemize @bullet -## @item -## Guaranteed stability of reduced models -## @item -## Lower guaranteed error bound -## @item -## Guaranteed a priori error bound -## @iftex -## @tex -## $$ \\sigma_{r+1} \\leq || (G-G_r) ||_{\\infty} \\leq 2 \\sum_{j=r+1}^{n} \\sigma_j $$ -## @end tex -## @end iftex -## @end itemize -## ## @strong{Inputs} ## @table @var ## @item G @@ -110,15 +92,15 @@ ## Hankel singular values @var{info.hsv} > @var{tol1} are retained. ## ## @item 'left', 'output' -## LTI model of the left/output frequency weighting. +## LTI model of the left/output frequency weighting @var{V}. ## Default value is an identity matrix. ## ## @item 'right', 'input' -## LTI model of the right/input frequency weighting. +## LTI model of the right/input frequency weighting @var{W}. ## Default value is an identity matrix. ## ## @item 'method' -## Order reduction approach to be used as follows: +## Approximation method for the L-infinity norm to be used as follows: ## @table @var ## @item 'sr', 'b' ## Use the square-root Balance & Truncate method. @@ -202,6 +184,26 @@ ## false if @code{G.scaled == true}. ## @end table ## +## +## UNSTABLE (from bstmodred) +## +## MIMO (from bstmodred) +## +## Approximation Properties: +## @itemize @bullet +## @item +## Guaranteed stability of reduced models +## @item +## Lower guaranteed error bound +## @item +## Guaranteed a priori error bound +## @iftex +## @tex +## $$ \\sigma_{r+1} \\leq || (G-G_r) ||_{\\infty} \\leq 2 \\sum_{j=r+1}^{n} \\sigma_j $$ +## @end tex +## @end iftex +## @end itemize +## ## @strong{Algorithm}@* ## Uses SLICOT AB09ID by courtesy of ## @uref{http://www.slicot.org, NICONET e.V.} Modified: trunk/octave-forge/extra/control-devel/inst/cfconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/cfconred.m 2011-12-26 21:00:43 UTC (rev 9469) +++ trunk/octave-forge/extra/control-devel/inst/cfconred.m 2011-12-27 20:41:54 UTC (rev 9470) @@ -22,6 +22,8 @@ ## @deftypefnx{Function File} {[@var{Kr}, @var{info}] =} cfconred (@var{G}, @var{F}, @var{L}, @var{ncr}, @var{opt}, @dots{}) ## ## Reduction of state-feedback-observer based controller by coprime factorization (CF). +## Given a plant @var{G}, state feedback gain @var{F} and full observer gain @var{L}, +## determine a reduced order controller @var{Kr}. ## ## @strong{Inputs} ## @table @var Modified: trunk/octave-forge/extra/control-devel/inst/fwcfconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/fwcfconred.m 2011-12-26 21:00:43 UTC (rev 9469) +++ trunk/octave-forge/extra/control-devel/inst/fwcfconred.m 2011-12-27 20:41:54 UTC (rev 9470) @@ -22,6 +22,8 @@ ## @deftypefnx{Function File} {[@var{Kr}, @var{info}] =} fwcfconred (@var{G}, @var{F}, @var{L}, @var{ncr}, @var{opt}, @dots{}) ## ## Reduction of state-feedback-observer based controller by frequency-weighted coprime factorization (FW CF). +## Given a plant @var{G}, state feedback gain @var{F} and full observer gain @var{L}, +## determine a reduced order controller @var{Kr} by using stability enforcing frequency weights. ## ## @strong{Inputs} ## @table @var Modified: trunk/octave-forge/extra/control-devel/inst/hnamodred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/hnamodred.m 2011-12-26 21:00:43 UTC (rev 9469) +++ trunk/octave-forge/extra/control-devel/inst/hnamodred.m 2011-12-27 20:41:54 UTC (rev 9470) @@ -23,14 +23,14 @@ ## ## Model order reduction by frequency weighted optimal Hankel-norm (HNA) method. ## The aim of model reduction is to find an LTI system @var{Gr} of order -## @var{nr} (nr << n) such that the input-output behaviour of @var{Gr} +## @var{nr} (nr < n) such that the input-output behaviour of @var{Gr} ## approximates the one from original system @var{G}. ## ## HNA is an absolute error method which tries to minimize ## @iftex ## @tex ## $$ || G - G_r ||_H = min $$ -## $$ || W_o \\ (G - G_r) \\ W_i ||_H = min $$ +## $$ || V \\ (G - G_r) \\ W ||_H = min $$ ## @end tex ## @end iftex ## @ifnottex @@ -38,32 +38,13 @@ ## ||G-Gr|| = min ## H ## -## ||Wo (G-Gr) Wi|| = min -## H +## ||V (G-Gr) W|| = min +## H ## @end example ## @end ifnottex -## where @var{Wo} and @var{Wi} denote output and input weightings. +## where @var{V} and @var{W} denote output and input weightings. ## -## UNSTABLE (from bstmodred) ## -## MIMO (from bstmodred) -## -## Approximation Properties: -## @itemize @bullet -## @item -## Guaranteed stability of reduced models -## @item -## Lower guaranteed error bound -## @item -## Guaranteed a priori error bound -## @iftex -## @tex -## $$ \\sigma_{r+1} \\leq || (G-G_r) ||_{\\infty} \\leq 2 \\sum_{j=r+1}^{n} \\sigma_j $$ -## @end tex -## @end iftex -## @end itemize -## -## ## @strong{Inputs} ## @table @var ## @item G @@ -266,6 +247,26 @@ ## false if @code{G.scaled == true}. ## @end table ## +## +## UNSTABLE (from bstmodred) +## +## MIMO (from bstmodred) +## +## Approximation Properties: +## @itemize @bullet +## @item +## Guaranteed stability of reduced models +## @item +## Lower guaranteed error bound +## @item +## Guaranteed a priori error bound +## @iftex +## @tex +## $$ \\sigma_{r+1} \\leq || (G-G_r) ||_{\\infty} \\leq 2 \\sum_{j=r+1}^{n} \\sigma_j $$ +## @end tex +## @end iftex +## @end itemize +## ## @strong{Algorithm}@* ## Uses SLICOT AB09JD by courtesy of ## @uref{http://www.slicot.org, NICONET e.V.} Modified: trunk/octave-forge/extra/control-devel/inst/spamodred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/spamodred.m 2011-12-26 21:00:43 UTC (rev 9469) +++ trunk/octave-forge/extra/control-devel/inst/spamodred.m 2011-12-27 20:41:54 UTC (rev 9470) @@ -22,7 +22,29 @@ ## @deftypefnx{Function File} {[@var{Gr}, @var{info}] =} spamodred (@var{G}, @var{nr}, @var{opt}, @dots{}) ## ## Model order reduction by frequency weighted Singular Perturbation Approximation (SPA). +## The aim of model reduction is to find an LTI system @var{Gr} of order +## @var{nr} (nr < n) such that the input-output behaviour of @var{Gr} +## approximates the one from original system @var{G}. ## +## SPA is an absolute error method which tries to minimize +## @iftex +## @tex +## $$ || G - G_r ||_{\\infty} = min $$ +## $$ || V \\ (G - G_r) \\ W ||_{\\infty} = min $$ +## @end tex +## @end iftex +## @ifnottex +## @example +## ||G-Gr|| = min +## inf +## +## ||V (G-Gr) W|| = min +## inf +## @end example +## @end ifnottex +## where @var{V} and @var{W} denote output and input weightings. +## +## ## @strong{Inputs} ## @table @var ## @item G @@ -70,15 +92,15 @@ ## Hankel singular values @var{info.hsv} > @var{tol1} are retained. ## ## @item 'left', 'output' -## LTI model of the left/output frequency weighting. +## LTI model of the left/output frequency weighting @var{V}. ## Default value is an identity matrix. ## ## @item 'right', 'input' -## LTI model of the right/input frequency weighting. +## LTI model of the right/input frequency weighting @var{W}. ## Default value is an identity matrix. ## ## @item 'method' -## Order reduction approach to be used as follows: +## Approximation method for the L-infinity norm to be used as follows: ## @table @var ## @item 'sr', 's' ## Use the square-root Singular Perturbation Approximation method. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2011-12-27 20:48:27
|
Revision: 9471 http://octave.svn.sourceforge.net/octave/?rev=9471&view=rev Author: paramaniac Date: 2011-12-27 20:48:20 +0000 (Tue, 27 Dec 2011) Log Message: ----------- control-devel: change default weightings to stability and performance enforcing ones Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/__conred_sb16ad__.m trunk/octave-forge/extra/control-devel/inst/btaconred.m trunk/octave-forge/extra/control-devel/inst/spaconred.m Modified: trunk/octave-forge/extra/control-devel/inst/__conred_sb16ad__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__conred_sb16ad__.m 2011-12-27 20:41:54 UTC (rev 9470) +++ trunk/octave-forge/extra/control-devel/inst/__conred_sb16ad__.m 2011-12-27 20:48:20 UTC (rev 9471) @@ -83,7 +83,7 @@ tol2 = 0.0; jobc = jobo = 0; bf = true; # balancing-free - weight = 0; + weight = 3; equil = scaled && scaledc; ordsel = 1; ncr = 0; Modified: trunk/octave-forge/extra/control-devel/inst/btaconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/btaconred.m 2011-12-27 20:41:54 UTC (rev 9470) +++ trunk/octave-forge/extra/control-devel/inst/btaconred.m 2011-12-27 20:48:20 UTC (rev 9471) @@ -98,7 +98,7 @@ ## Specifies the type of frequency-weighting as follows: ## @table @var ## @item 'none' -## No weightings are used (V = I, W = I). Default value. +## No weightings are used (V = I, W = I). ## ## @item 'left', 'output' ## Use stability enforcing left (output) weighting @@ -141,6 +141,7 @@ ## V = (I-G*K) *G , W = (I-G*K) ## @end example ## @end ifnottex +## Default value. ## @end table ## ## @item 'feedback' Modified: trunk/octave-forge/extra/control-devel/inst/spaconred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/spaconred.m 2011-12-27 20:41:54 UTC (rev 9470) +++ trunk/octave-forge/extra/control-devel/inst/spaconred.m 2011-12-27 20:48:20 UTC (rev 9471) @@ -98,7 +98,7 @@ ## Specifies the type of frequency-weighting as follows: ## @table @var ## @item 'none' -## No weightings are used (V = I, W = I). Default value. +## No weightings are used (V = I, W = I). ## ## @item 'left', 'output' ## Use stability enforcing left (output) weighting @@ -141,6 +141,7 @@ ## V = (I-G*K) *G , W = (I-G*K) ## @end example ## @end ifnottex +## Default value. ## @end table ## ## @item 'feedback' This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2011-12-28 15:22:46
|
Revision: 9473 http://octave.svn.sourceforge.net/octave/?rev=9473&view=rev Author: paramaniac Date: 2011-12-28 15:22:39 +0000 (Wed, 28 Dec 2011) Log Message: ----------- control-devel: add references to texinfo strings Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/btamodred.m trunk/octave-forge/extra/control-devel/inst/spamodred.m Modified: trunk/octave-forge/extra/control-devel/inst/btamodred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/btamodred.m 2011-12-28 12:55:47 UTC (rev 9472) +++ trunk/octave-forge/extra/control-devel/inst/btamodred.m 2011-12-28 15:22:39 UTC (rev 9473) @@ -204,6 +204,29 @@ ## @end iftex ## @end itemize ## +## +## @strong{References}@* +## [1] Enns, D. +## Model reduction with balanced realizations: An error bound +## and a frequency weighted generalization. +## Proc. 23-th CDC, Las Vegas, pp. 127-132, 1984. +## +## [2] Lin, C.-A. and Chiu, T.-Y. +## Model reduction via frequency-weighted balanced realization. +## Control Theory and Advanced Technology, vol. 8, +## pp. 341-351, 1992. +## +## [3] Sreeram, V., Anderson, B.D.O and Madievski, A.G. +## New results on frequency weighted balanced reduction +## technique. +## Proc. ACC, Seattle, Washington, pp. 4004-4009, 1995. +## +## [4] Varga, A. and Anderson, B.D.O. +## Square-root balancing-free methods for the frequency-weighted +## balancing related model reduction. +## (report in preparation) +## +## ## @strong{Algorithm}@* ## Uses SLICOT AB09ID by courtesy of ## @uref{http://www.slicot.org, NICONET e.V.} Modified: trunk/octave-forge/extra/control-devel/inst/spamodred.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/spamodred.m 2011-12-28 12:55:47 UTC (rev 9472) +++ trunk/octave-forge/extra/control-devel/inst/spamodred.m 2011-12-28 15:22:39 UTC (rev 9473) @@ -184,6 +184,29 @@ ## false if @code{G.scaled == true}. ## @end table ## +## +## @strong{References}@* +## [1] Enns, D. +## Model reduction with balanced realizations: An error bound +## and a frequency weighted generalization. +## Proc. 23-th CDC, Las Vegas, pp. 127-132, 1984. +## +## [2] Lin, C.-A. and Chiu, T.-Y. +## Model reduction via frequency-weighted balanced realization. +## Control Theory and Advanced Technology, vol. 8, +## pp. 341-351, 1992. +## +## [3] Sreeram, V., Anderson, B.D.O and Madievski, A.G. +## New results on frequency weighted balanced reduction +## technique. +## Proc. ACC, Seattle, Washington, pp. 4004-4009, 1995. +## +## [4] Varga, A. and Anderson, B.D.O. +## Square-root balancing-free methods for the frequency-weighted +## balancing related model reduction. +## (report in preparation) +## +## ## @strong{Algorithm}@* ## Uses SLICOT AB09ID by courtesy of ## @uref{http://www.slicot.org, NICONET e.V.} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-02-15 17:57:41
|
Revision: 9626 http://octave.svn.sourceforge.net/octave/?rev=9626&view=rev Author: paramaniac Date: 2012-02-15 17:57:34 +0000 (Wed, 15 Feb 2012) Log Message: ----------- control-devel: work on iddata class Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/@iddata/iddata.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-02-15 11:54:15 UTC (rev 9625) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/iddata.m 2012-02-15 17:57:34 UTC (rev 9626) @@ -2,20 +2,21 @@ ## Created: October 2011 ## Version: 0.1 -function dat = iddata (y = [], u = [], tsam = [], varargin) +function dat = iddata (y = [], u = [], tsam = -1, varargin) if (nargin == 1 && isa (y, "iddata")) dat = y; return; - elseif (nargin < 3) + elseif (nargin < 2) print_usage (); endif - if (! issample (tsam, 1)) + if (! issample (tsam, -1)) error ("iddata: invalid sampling time"); endif - [p, m] = __iddata_dim__ (y, u); + [y, u] = __adjust_iddata__ (y, u); + [p, m, e] = __iddata_dim__ (y, u); outname = repmat ({""}, p, 1); inname = repmat ({""}, m, 1); @@ -31,4 +32,23 @@ dat = set (dat, varargin{:}); endif -endfunction \ No newline at end of file +endfunction + + +function [y, u] = __adjust_iddata__ (y, u) + + if (iscell (y)) + y = reshape (y, [], 1); + else + y = {y}; + endif + + if (isempty (u)) + u = []; # avoid [](nx0) and the like + elseif (iscell (u)) + u = reshape (u, [], 1); + else + u = {u}; + endif + +endfunction Modified: trunk/octave-forge/extra/control-devel/inst/__iddata_dim__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__iddata_dim__.m 2012-02-15 11:54:15 UTC (rev 9625) +++ trunk/octave-forge/extra/control-devel/inst/__iddata_dim__.m 2012-02-15 17:57:34 UTC (rev 9626) @@ -2,8 +2,34 @@ ## Created: October 2011 ## Version: 0.1 -function [p, m] = __iddata_dim__ (y, u) +function [p, m, e] = __iddata_dim__ (y, u) + e = numel (y); # number of experiments + + if (isempty (u)) # time series data, outputs only + [p, m] = cellfun (@__experiment_dim__, y, "uniformoutput", false); + elseif (e == numel (u)) # outputs and inputs present + [p, m] = cellfun (@__experiment_dim__, y, u, "uniformoutput", false); + else + error ("iddata: require input and output data with matching number of experiments"); + endif + + if (e > 1 && ! isequal (p{:})) + error ("iddata: require identical number of output channels for all experiments"); + endif + + if (e > 1 && ! isequal (m{:})) + error ("iddata: require identical number of input channels for all experiments"); + endif + + p = p{1}; + m = m{1}; + +endfunction + + +function [p, m] = __experiment_dim__ (y, u = []) + if (! is_real_matrix (y, u)) error ("iddata: inputs and outputs must be real"); endif @@ -11,7 +37,7 @@ [ly, p] = size (y); [lu, m] = size (u); - if (ly != lu) + if (! isempty (u) && ly != lu) error ("iddata: matrices 'y' and 'u' must have the same number of samples (rows)"); endif @@ -23,4 +49,4 @@ warning ("iddata: more inputs than samples - matrice 'u' should probably be transposed"); 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-02-23 15:44:20
|
Revision: 9672 http://octave.svn.sourceforge.net/octave/?rev=9672&view=rev Author: paramaniac Date: 2012-02-23 15:44:09 +0000 (Thu, 23 Feb 2012) Log Message: ----------- control-devel: handle sampling time Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/@iddata/iddata.m Added Paths: ----------- trunk/octave-forge/extra/control-devel/inst/__adjust_iddata_tsam__.m Modified: trunk/octave-forge/extra/control-devel/inst/@iddata/iddata.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/iddata.m 2012-02-23 15:02:36 UTC (rev 9671) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/iddata.m 2012-02-23 15:44:09 UTC (rev 9672) @@ -56,7 +56,7 @@ ## Created: October 2011 ## Version: 0.1 -function dat = iddata (y = [], u = [], tsam = -1, varargin) +function dat = iddata (y = [], u = [], tsam = [], varargin) if (nargin == 1 && isa (y, "iddata")) dat = y; @@ -65,13 +65,9 @@ print_usage (); endif - ## TODO: individual tsam for each experiment - if (! issample (tsam, -1)) - error ("iddata: invalid sampling time"); - endif - [y, u] = __adjust_iddata__ (y, u); [p, m, e] = __iddata_dim__ (y, u); + tsam = __adjust_iddata_tsam__ (tsam, e); outname = repmat ({""}, p, 1); inname = repmat ({""}, m, 1); @@ -79,7 +75,7 @@ dat = struct ("y", {y}, "outname", {outname}, "outunit", {outname}, "u", {u}, "inname", {inname}, "inunit", {inname}, - "tsam", tsam, "timeunit", {""}, + "tsam", {tsam}, "timeunit", {""}, "expname", {expname}, "name", "", "notes", {{}}, "userdata", []); Added: trunk/octave-forge/extra/control-devel/inst/__adjust_iddata_tsam__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__adjust_iddata_tsam__.m (rev 0) +++ trunk/octave-forge/extra/control-devel/inst/__adjust_iddata_tsam__.m 2012-02-23 15:44:09 UTC (rev 9672) @@ -0,0 +1,48 @@ +## 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 -*- +## Check whether tsam is a e-by-1 cell array of valid sampling times. +## If not, it tries to convert tsam accordingly. +## Empty tsam are filled with default value 1. + +## Author: Lukas Reichlin <luk...@gm...> +## Created: February 2012 +## Version: 0.1 + +function tsam = __adjust_iddata_tsam__ (tsam, e) + + if (isempty (tsam)) + tsam = num2cell (ones (e, 1)); + elseif (iscell (tsam)) + tsam = reshape (tsam, [], 1); + else + tsam = {tsam}; + endif + + tmp = cellfun (@issample, tsam); + + if (any (! tmp)) + error ("iddata: invalid sampling time"); + endif + + if (numel (tsam) != e) + error ("iddata: there are %d experiments, but only %d sampling times", \ + e, numel (tsam)); + endif + +endfunction This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-03-05 17:11:41
|
Revision: 9746 http://octave.svn.sourceforge.net/octave/?rev=9746&view=rev Author: paramaniac Date: 2012-03-05 17:11:29 +0000 (Mon, 05 Mar 2012) Log Message: ----------- control-devel: work on iddata draft code Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m trunk/octave-forge/extra/control-devel/inst/__iddata_dim__.m trunk/octave-forge/extra/control-devel/inst/test_devel.m Added Paths: ----------- trunk/octave-forge/extra/control-devel/inst/@iddata/horzcat.m trunk/octave-forge/extra/control-devel/inst/@iddata/merge.m trunk/octave-forge/extra/control-devel/inst/@iddata/vertcat.m Modified: trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m 2012-03-05 14:41:13 UTC (rev 9745) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m 2012-03-05 17:11:29 UTC (rev 9746) @@ -27,9 +27,25 @@ function dat = cat (dim, varargin) tmp = cellfun (@iddata, varargin); + [n, p, m, e] = cellfun (@size, varargin, "uniformoutput", false); switch (dim) case 1 # vertcat - catenate samples + if (nargin > 2) # isequal only works for 2 or more arguments (dim doesn't count) + if (! isequal (e{:})) + error ("iddata: cat: number of experiments don't match [%s]", \ + num2str (cell2mat (e), "%d ")); + endif + if (! isequal (p{:}) + error ("iddata: cat: number of outputs don't match [%s]", \ + num2str (cell2mat (p), "%d ")); + endif + if (! isequal (m{:}) + error ("iddata: cat: number of inputs don't match [%s]", \ + num2str (cell2mat (m), "%d ")); + endif + endif + y = cellfun (@vertcat, tmp.y, "uniformoutput", false); u = cellfun (@vertcat, tmp.u, "uniformoutput", false); @@ -47,4 +63,7 @@ dat = iddata (y, u); -endfunction \ No newline at end of file +endfunction + + +%!error (cat (1, iddata (1, 1), iddata ({2, 3}, {2, 3}))); \ No newline at end of file Added: trunk/octave-forge/extra/control-devel/inst/@iddata/horzcat.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/horzcat.m (rev 0) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/horzcat.m 2012-03-05 17:11:29 UTC (rev 9746) @@ -0,0 +1,31 @@ +## 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{dat} =} cat (@var{dim}, @var{dat1}, @var{dat2}, @dots{}) +## Concatenation of iddata objects along dimension @var{dim}. +## @end deftypefn + +## Author: Lukas Reichlin <luk...@gm...> +## Created: March 2012 +## Version: 0.1 + +function dat = horzcat (varargin) + + dat = cat (2, varargin{:}); + +endfunction Added: trunk/octave-forge/extra/control-devel/inst/@iddata/merge.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/merge.m (rev 0) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/merge.m 2012-03-05 17:11:29 UTC (rev 9746) @@ -0,0 +1,31 @@ +## 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{dat} =} cat (@var{dim}, @var{dat1}, @var{dat2}, @dots{}) +## Concatenation of iddata objects along dimension @var{dim}. +## @end deftypefn + +## Author: Lukas Reichlin <luk...@gm...> +## Created: March 2012 +## Version: 0.1 + +function dat = merge (varargin) + + dat = cat (3, varargin{:}); + +endfunction Added: trunk/octave-forge/extra/control-devel/inst/@iddata/vertcat.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/vertcat.m (rev 0) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/vertcat.m 2012-03-05 17:11:29 UTC (rev 9746) @@ -0,0 +1,31 @@ +## 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{dat} =} cat (@var{dim}, @var{dat1}, @var{dat2}, @dots{}) +## Concatenation of iddata objects along dimension @var{dim}. +## @end deftypefn + +## Author: Lukas Reichlin <luk...@gm...> +## Created: March 2012 +## Version: 0.1 + +function dat = vertcat (varargin) + + dat = cat (1, varargin{:}); + +endfunction Modified: trunk/octave-forge/extra/control-devel/inst/__iddata_dim__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__iddata_dim__.m 2012-03-05 14:41:13 UTC (rev 9745) +++ trunk/octave-forge/extra/control-devel/inst/__iddata_dim__.m 2012-03-05 17:11:29 UTC (rev 9746) @@ -38,7 +38,8 @@ [lu, m] = size (u); if (! isempty (u) && ly != lu) - error ("iddata: matrices 'y' and 'u' must have the same number of samples (rows)"); + error ("iddata: matrices 'y' (%dx%d) and 'u' (%dx%d) must have the same number of samples (rows)", \ + ly, p, lu, m); endif if (ly < p) Modified: trunk/octave-forge/extra/control-devel/inst/test_devel.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/test_devel.m 2012-03-05 14:41:13 UTC (rev 9745) +++ trunk/octave-forge/extra/control-devel/inst/test_devel.m 2012-03-05 17:11:29 UTC (rev 9746) @@ -1,14 +1,3 @@ ## identification -test fitfrd - -## model order reduction -test bstmodred -test btamodred -test hnamodred -## test spamodred # TODO: create test case - -## controller order reduction -test btaconred -test cfconred -test fwcfconred -## test spaconred # TODO: create test case \ No newline at end of file +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-03-07 18:53:59
|
Revision: 9770 http://octave.svn.sourceforge.net/octave/?rev=9770&view=rev Author: paramaniac Date: 2012-03-07 17:51:32 +0000 (Wed, 07 Mar 2012) Log Message: ----------- control-devel: replace [] by {} to simplify code in cat :-) Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m trunk/octave-forge/extra/control-devel/inst/@iddata/iddata.m trunk/octave-forge/extra/control-devel/inst/__adjust_iddata__.m Modified: trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m 2012-03-07 17:40:03 UTC (rev 9769) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/cat.m 2012-03-07 17:51:32 UTC (rev 9770) @@ -36,25 +36,15 @@ check_inputs (tmp, m); y = cellfun (@vertcat, tmp.y, "uniformoutput", false); - - if (m{1} > 0) # m(2:end) are equal, tested by check_inputs - u = cellfun (@vertcat, tmp.u, "uniformoutput", false); - else # time series don't have inputs - u = []; - endif + u = cellfun (@vertcat, tmp.u, "uniformoutput", false); case 2 # horzcat - catenate channels check_experiments (tmp, e); check_samples (n); y = cellfun (@horzcat, tmp.y, "uniformoutput", false); - - if (m{1} > 0) - u = cellfun (@horzcat, tmp.u, "uniformoutput", false); - else - u = []; - endif - + u = cellfun (@horzcat, tmp.u, "uniformoutput", false); + case 3 # merge - catenate experiments check_outputs (tmp, p); check_inputs (tmp, m); Modified: trunk/octave-forge/extra/control-devel/inst/@iddata/iddata.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/iddata.m 2012-03-07 17:40:03 UTC (rev 9769) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/iddata.m 2012-03-07 17:51:32 UTC (rev 9770) @@ -56,7 +56,7 @@ ## Created: October 2011 ## Version: 0.1 -function dat = iddata (y = [], u = [], tsam = [], varargin) +function dat = iddata (y = {}, u = {}, tsam = {}, varargin) if (nargin == 1 && isa (y, "iddata")) dat = y; Modified: trunk/octave-forge/extra/control-devel/inst/__adjust_iddata__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__adjust_iddata__.m 2012-03-07 17:40:03 UTC (rev 9769) +++ trunk/octave-forge/extra/control-devel/inst/__adjust_iddata__.m 2012-03-07 17:51:32 UTC (rev 9770) @@ -28,7 +28,7 @@ endif if (isempty (u)) - u = []; # avoid [](nx0) and the like + u = {}; # avoid [](nx0) and the like elseif (iscell (u)) u = reshape (u, [], 1); else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-04-02 17:57:49
|
Revision: 10132 http://octave.svn.sourceforge.net/octave/?rev=10132&view=rev Author: paramaniac Date: 2012-04-02 17:57:43 +0000 (Mon, 02 Apr 2012) Log Message: ----------- control-devel: add detrend method Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/test_devel.m Added Paths: ----------- trunk/octave-forge/extra/control-devel/inst/@iddata/detrend.m Added: trunk/octave-forge/extra/control-devel/inst/@iddata/detrend.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/detrend.m (rev 0) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/detrend.m 2012-04-02 17:57:43 UTC (rev 10132) @@ -0,0 +1,54 @@ +## 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{dat} =} detrend (@var{dat}) +## @deftypefnx {Function File} {@var{dat} =} detrend (@var{dat}, @var{ord}) +## Detrend outputs and inputs of dataset @var{dat} by +## removing the best fit of a polynomial of order @var{ord}. +## If @var{ord} is not specified, default value 0 is taken. +## This corresponds to removing a constant. +## @end deftypefn + +## Author: Lukas Reichlin <luk...@gm...> +## Created: April 2012 +## Version: 0.1 + +function dat = detrend (dat, ord = 0) + + if (nargin > 2) # no need to test nargin == 0, this is handled by built-in detrend + print_usage (); + endif + + if ((! is_real_scalar (ord) || fix (ord) != ord) && ! ischar (ord)) # chars are handled by built-in detrend + error ("iddata: detrend: second argument must be a positve integer"); + endif + + dat.y = cellfun (@(y) detrend (y, ord), dat.y, "uniformoutput", false); + dat.u = cellfun (@(u) detrend (u, ord), dat.u, "uniformoutput", false); + +endfunction + + +%!shared DATD, Z +%! DAT = iddata ({[(1:10).', (1:2:20).'], [(10:-1:1).', (20:-2:1).']}, {[(41:50).', (46:55).'], [(61:70).', (-66:-1:-75).']}); +%! DATD = detrend (DAT, "linear"); +%! Z = zeros (10, 2); +%!assert (DATD.y{1}, Z, 1e-10); +%!assert (DATD.y{2}, Z, 1e-10); +%!assert (DATD.u{1}, Z, 1e-10); +%!assert (DATD.u{2}, Z, 1e-10); Modified: trunk/octave-forge/extra/control-devel/inst/test_devel.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/test_devel.m 2012-04-02 15:17:42 UTC (rev 10131) +++ trunk/octave-forge/extra/control-devel/inst/test_devel.m 2012-04-02 17:57:43 UTC (rev 10132) @@ -1,3 +1,4 @@ ## identification test @iddata/iddata test @iddata/cat +test @iddata/detrend This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-04-11 05:23:58
|
Revision: 10183 http://octave.svn.sourceforge.net/octave/?rev=10183&view=rev Author: paramaniac Date: 2012-04-11 05:23:52 +0000 (Wed, 11 Apr 2012) Log Message: ----------- control-devel: fix borderline case in fft method, add test Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/@iddata/fft.m trunk/octave-forge/extra/control-devel/inst/test_devel.m Modified: trunk/octave-forge/extra/control-devel/inst/@iddata/fft.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/fft.m 2012-04-09 20:16:48 UTC (rev 10182) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/fft.m 2012-04-11 05:23:52 UTC (rev 10183) @@ -46,20 +46,21 @@ error ("iddata: fft: second argument invalid"); endif - dat.y = cellfun (@(y, n) fft (y, n)(1:fix(n/2)+1, :) / sqrt (n), dat.y, n, "uniformoutput", false); - dat.u = cellfun (@(u, n) fft (u, n)(1:fix(n/2)+1, :) / sqrt (n), dat.u, n, "uniformoutput", false); + dat.y = cellfun (@(y, n) fft (y, n, 1)(1:fix(n/2)+1, :) / sqrt (n), dat.y, n, "uniformoutput", false); + dat.u = cellfun (@(u, n) fft (u, n, 1)(1:fix(n/2)+1, :) / sqrt (n), dat.u, n, "uniformoutput", false); + ## fft (x, n, dim=1) because x could be a row vector (n=1) - dat.w = cellfun (@(n, tsam) (0:fix(n/2)).' * (2*pi/tsam/n), n, dat.tsam, "uniformoutput", false); + dat.w = cellfun (@(n, tsam) (0:fix(n/2)).' * (2*pi/abs(tsam)/n), n, dat.tsam, "uniformoutput", false); + ## abs(tsam) because of -1 for undefined sampling times dat.timedomain = false; endfunction -%!shared DATD, Z -%! DAT = iddata ({[(1:10).', (1:2:20).'], [(10:-1:1).', (20:-2:1).']}, {[(41:50).', (46:55).'], [(61:70).', (-66:-1:-75).']}); -%! DATD = detrend (DAT, "linear"); -%! Z = zeros (10, 2); -%!assert (DATD.y{1}, Z, 1e-10); -%!assert (DATD.y{2}, Z, 1e-10); -%!assert (DATD.u{1}, Z, 1e-10); -%!assert (DATD.u{2}, Z, 1e-10); +%!shared DATD, Y, U +%! Y = 1:10; +%! U = 20:-2:1; +%! DAT = iddata (Y, U); +%! DATD = fft (DAT); +%!assert (DATD.y{1}, Y, 1e-10); +%!assert (DATD.u{1}, U, 1e-10); Modified: trunk/octave-forge/extra/control-devel/inst/test_devel.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/test_devel.m 2012-04-09 20:16:48 UTC (rev 10182) +++ trunk/octave-forge/extra/control-devel/inst/test_devel.m 2012-04-11 05:23:52 UTC (rev 10183) @@ -2,3 +2,4 @@ test @iddata/iddata test @iddata/cat test @iddata/detrend +test @iddata/fft This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-04-30 16:51:57
|
Revision: 10336 http://octave.svn.sourceforge.net/octave/?rev=10336&view=rev Author: paramaniac Date: 2012-04-30 16:51:51 +0000 (Mon, 30 Apr 2012) Log Message: ----------- control-devel: work on arx function Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/arx.m Added Paths: ----------- trunk/octave-forge/extra/control-devel/inst/test_arx.m Modified: trunk/octave-forge/extra/control-devel/inst/arx.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/arx.m 2012-04-30 15:57:22 UTC (rev 10335) +++ trunk/octave-forge/extra/control-devel/inst/arx.m 2012-04-30 16:51:51 UTC (rev 10336) @@ -21,16 +21,17 @@ Y = dat.y{1}; U = dat.u{1}; + Ts = dat.tsam{1}; + + PhiY = toeplitz (Y(1:end-1, :), zeros (1, na)); + PhiU = toeplitz (U(1:end-1, :), zeros (1, nb)); + Phi = [-PhiY, PhiU] - PhiY = toeplitz ([0; Y(1:end-1, :)], zeros (1, na)); - PhiU = toeplitz ([0; U(1:end-1, :)], zeros (1, nb)); - Phi = [PhiY, PhiU]; + Theta = Phi \ Y(2:end, :); - Theta = Phi \ Y; + A = [1; Theta(1:na)]; % ??? + B = Theta(na+1:end); - A = Theta(1:n); - B = Theta(n+1:end); - - sys = tf ({B, 1}, {A, A}, dat.tsam); + sys = tf ({B, 1}, {A, A}, Ts); endfunction \ No newline at end of file Added: trunk/octave-forge/extra/control-devel/inst/test_arx.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/test_arx.m (rev 0) +++ trunk/octave-forge/extra/control-devel/inst/test_arx.m 2012-04-30 16:51:51 UTC (rev 10336) @@ -0,0 +1,10 @@ +u = [ 0; 0.5; 1; 1; 1; 1; 1 ]; +y = [ 0; 0; 0.25; 0.62; 0.81; 0.90; 0.95 ]; + +dat = iddata (y, u) + +sys = arx (dat, 1, 1) + + +ysim = lsim (sys(1,1), u); + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-05-01 20:26:55
|
Revision: 10350 http://octave.svn.sourceforge.net/octave/?rev=10350&view=rev Author: paramaniac Date: 2012-05-01 20:26:49 +0000 (Tue, 01 May 2012) Log Message: ----------- control-devel: use -1 (unspecified) as default sampling time for iddata sets Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/@iddata/iddata.m trunk/octave-forge/extra/control-devel/inst/__adjust_iddata_tsam__.m Modified: trunk/octave-forge/extra/control-devel/inst/@iddata/iddata.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/@iddata/iddata.m 2012-05-01 17:16:10 UTC (rev 10349) +++ trunk/octave-forge/extra/control-devel/inst/@iddata/iddata.m 2012-05-01 20:26:49 UTC (rev 10350) @@ -41,7 +41,7 @@ ## where @var{e} denotes the number of experiments ## and n(i) the individual number of samples for each experiment. ## @item tsam -## Sampling time. +## Sampling time. If not specified, default value -1 (unspecified) is taken. ## @item @dots{} ## Optional pairs of properties and values. ## @end table Modified: trunk/octave-forge/extra/control-devel/inst/__adjust_iddata_tsam__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__adjust_iddata_tsam__.m 2012-05-01 17:16:10 UTC (rev 10349) +++ trunk/octave-forge/extra/control-devel/inst/__adjust_iddata_tsam__.m 2012-05-01 20:26:49 UTC (rev 10350) @@ -18,7 +18,7 @@ ## -*- texinfo -*- ## Check whether tsam is a e-by-1 cell array of valid sampling times. ## If not, it tries to convert tsam accordingly. -## Empty tsam are filled with default value 1. +## Empty tsam are filled with default value -1. ## Author: Lukas Reichlin <luk...@gm...> ## Created: February 2012 @@ -27,14 +27,14 @@ function tsam = __adjust_iddata_tsam__ (tsam, e) if (isempty (tsam)) - tsam = num2cell (ones (e, 1)); + tsam = num2cell (-ones (e, 1)); elseif (iscell (tsam)) tsam = reshape (tsam, [], 1); else tsam = {tsam}; endif - tmp = cellfun (@issample, tsam); + tmp = cellfun (@(x) issample (x, -1), tsam); if (any (! tmp)) error ("iddata: invalid sampling time"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-05-12 19:04:44
|
Revision: 10429 http://octave.svn.sourceforge.net/octave/?rev=10429&view=rev Author: paramaniac Date: 2012-05-12 19:04:36 +0000 (Sat, 12 May 2012) Log Message: ----------- control-devel: subspace identfication Modified Paths: -------------- trunk/octave-forge/extra/control-devel/inst/arx.m Added 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 Added: trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m (rev 0) +++ trunk/octave-forge/extra/control-devel/inst/__slicot_identification__.m 2012-05-12 19:04:36 UTC (rev 10429) @@ -0,0 +1,57 @@ +function [sys, x0] = __slicot_identification__ (method, dat, s = [], n = []) + + switch (method) + case "moesp" + meth = 0; + case "n4sid" + meth = 1; + case "moen4" + meth = 2; + otherwise + error ("ident: invalid method"); # should never happen + endswitch + +% meth = 2; % 2 % geht: meth/alg 1/1, + alg = 0; % 0 % geht nicht: meth/alg 0/1 + jobd = 1; + batch = 3; + conct = 1; + ctrl = 0; %1; + rcond = 0.0; + tol = -1.0; % 0; + + [ns, l, m, e] = size (dat); + + if (isempty (s) && isempty (n)) + nsmp = ns(1); + nobr = fix ((nsmp+1)/(2*(m+l+1))); + ctrl = 0; # confirm system order estimate + n = 0; + % nsmp >= 2*(m+l+1)*nobr - 1 + % nobr <= (nsmp+1)/(2*(m+l+1)) + elseif (isempty (s)) + s = min (2*n, n+10); + nsmp = ns(1); + nobr = fix ((nsmp+1)/(2*(m+l+1))); + nobr = min (nobr, s); + ctrl = 1; # no confirmation + elseif (isempty (n)) + nobr = s; + ctrl = 0; # confirm system order estimate + n = 0; + else # s & n non-empty + nsmp = ns(1); + nobr = fix ((nsmp+1)/(2*(m+l+1))); + if (s > nobr) + error ("ident: s > nobr"); + endif + nobr = s; + ctrl = 1; + ## TODO: specify n for IB01BD + endif + + [a, b, c, d, q, ry, s, k, x0] = slident (dat.y{1}, dat.u{1}, nobr, n, meth, alg, jobd, batch, conct, ctrl, rcond, tol); + + sys = ss (a, b, c, d, dat.tsam{1}); + +endfunction Modified: trunk/octave-forge/extra/control-devel/inst/arx.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/arx.m 2012-05-12 16:41:38 UTC (rev 10428) +++ trunk/octave-forge/extra/control-devel/inst/arx.m 2012-05-12 19:04:36 UTC (rev 10429) @@ -1,3 +1,25 @@ +## 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} =} arx (@var{dat}, @var{na}, @var{nb}) +## ARX +## @end deftypefn + ## Author: Lukas Reichlin <luk...@gm...> ## Created: April 2012 ## Version: 0.1 Added: trunk/octave-forge/extra/control-devel/inst/moen4.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/moen4.m (rev 0) +++ trunk/octave-forge/extra/control-devel/inst/moen4.m 2012-05-12 19:04:36 UTC (rev 10429) @@ -0,0 +1,33 @@ +## 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{dat} =} moen4 (@var{dat}, @var{s}, @var{n}) +## Combined method: MOESP algorithm for finding the +## matrices A and C, and N4SID algorithm for +## finding the matrices B and D. +## @end deftypefn + +## Author: Lukas Reichlin <luk...@gm...> +## Created: May 2012 +## Version: 0.1 + +function [sys, x0] = moen4 (varargin) + + [sys, x0] = __slicot_identification__ ("moen4", varargin{:}); + +endfunction \ No newline at end of file Added: trunk/octave-forge/extra/control-devel/inst/moesp.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/moesp.m (rev 0) +++ trunk/octave-forge/extra/control-devel/inst/moesp.m 2012-05-12 19:04:36 UTC (rev 10429) @@ -0,0 +1,31 @@ +## 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{dat} =} moesp (@var{dat}, @var{s}, @var{n}) +## MOESP. +## @end deftypefn + +## Author: Lukas Reichlin <luk...@gm...> +## Created: May 2012 +## Version: 0.1 + +function [sys, x0] = moesp (varargin) + + [sys, x0] = __slicot_identification__ ("moesp", varargin{:}); + +endfunction \ No newline at end of file Added: trunk/octave-forge/extra/control-devel/inst/n4sid.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/n4sid.m (rev 0) +++ trunk/octave-forge/extra/control-devel/inst/n4sid.m 2012-05-12 19:04:36 UTC (rev 10429) @@ -0,0 +1,31 @@ +## 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{dat} =} n4sid (@var{dat}, @var{s}, @var{n}) +## N4SID. +## @end deftypefn + +## Author: Lukas Reichlin <luk...@gm...> +## Created: May 2012 +## Version: 0.1 + +function [sys, x0] = n4sid (varargin) + + [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. |