From: <par...@us...> - 2010-03-21 09:14:49
|
Revision: 7094 http://octave.svn.sourceforge.net/octave/?rev=7094&view=rev Author: paramaniac Date: 2010-03-21 09:14:41 +0000 (Sun, 21 Mar 2010) Log Message: ----------- control: use strcmp instead of eq Modified Paths: -------------- trunk/octave-forge/main/control/inst/@lti/feedback.m Modified: trunk/octave-forge/main/control/inst/@lti/feedback.m =================================================================== --- trunk/octave-forge/main/control/inst/@lti/feedback.m 2010-03-21 00:09:15 UTC (rev 7093) +++ trunk/octave-forge/main/control/inst/@lti/feedback.m 2010-03-21 09:14:41 UTC (rev 7094) @@ -145,15 +145,15 @@ if (isnumeric (fbsign)) fbsign = sign (fbsign); elseif (ischar (fbsign)) - if (fbsign == "+") + if (strcmp (fbsign, "+")) fbsign = +1; - elseif (fbsign == "-") + elseif (strcmp (fbsign, "-")) fbsign = -1; else - error ("feedback: invalid feedback sign"); + error ("feedback: invalid feedback sign string"); endif else - error ("feedback: invalid feedback sign"); + error ("feedback: invalid feedback sign type"); endif 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...> - 2010-10-17 02:10:06
|
Revision: 7858 http://octave.svn.sourceforge.net/octave/?rev=7858&view=rev Author: paramaniac Date: 2010-10-17 02:10:00 +0000 (Sun, 17 Oct 2010) Log Message: ----------- control: simplify feedback Modified Paths: -------------- trunk/octave-forge/main/control/inst/@lti/feedback.m Modified: trunk/octave-forge/main/control/inst/@lti/feedback.m =================================================================== --- trunk/octave-forge/main/control/inst/@lti/feedback.m 2010-10-17 02:09:38 UTC (rev 7857) +++ trunk/octave-forge/main/control/inst/@lti/feedback.m 2010-10-17 02:10:00 UTC (rev 7858) @@ -1,4 +1,4 @@ -## Copyright (C) 2009 Lukas F. Reichlin +## Copyright (C) 2009, 2010 Lukas F. Reichlin ## ## This file is part of LTI Syncope. ## @@ -40,9 +40,9 @@ ## Author: Lukas Reichlin <luk...@gm...> ## Created: October 2009 -## Version: 0.1 +## Version: 0.2 -function sys = feedback (sys1, sys2_or_fbsign, feedin_or_fbsign, feedout, fbsign) +function sys = feedback (sys1, sys2, feedin, feedout, fbsign = -1) [p1, m1] = size (sys1); @@ -52,43 +52,36 @@ error ("feedback: argument must be a square system"); endif - fbsign = -1; sys2 = eye (p1); feedin = 1 : m1; feedout = 1 : p1; case 2 - if (ischar (sys2_or_fbsign)) # sys = feedback (sys, "+") + if (ischar (sys2)) # sys = feedback (sys, "+") if (p1 != m1) - error ("feedback: argument must be a square system"); + error ("feedback: first argument must be a square system"); endif - fbsign = checkfbsign (sys2_or_fbsign); + fbsign = __check_fbsign__ (sys2); sys2 = eye (p1); feedin = 1 : m1; feedout = 1 : p1; - else # sys = feedback (sys1, sys2) - fbsign = -1; - sys2 = sys2_or_fbsign; - feedin = 1 : m1; - feedout = 1 : p1; - endif + endif # sys = feedback (sys1, sys2) + feedin = 1 : m1; + feedout = 1 : p1; + case 3 # sys = feedback (sys1, sys2, "+") - fbsign = checkfbsign (feedin_or_fbsign); - sys2 = sys2_or_fbsign; + fbsign = __check_fbsign__ (feedin); feedin = 1 : m1; feedout = 1 : p1; case 4 # sys = feedback (sys1, sys2, feedin, feedout) - fbsign = -1; - sys2 = sys2_or_fbsign; - feedin = feedin_or_fbsign; + ## nothing needs to be done here + ## case 4 required to prevent "otherwise" case 5 # sys = feedback (sys1, sys2, feedin, feedout, "+") - fbsign = checkfbsign (fbsign); - sys2 = sys2_or_fbsign; - feedin = feedin_or_fbsign; + fbsign = __check_fbsign__ (fbsign); otherwise print_usage (); @@ -146,7 +139,7 @@ endfunction -function fbsign = checkfbsign (fbsign) +function fbsign = __check_fbsign__ (fbsign) if (is_real_scalar (fbsign)) fbsign = sign (fbsign); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2011-08-08 19:32:39
|
Revision: 8450 http://octave.svn.sourceforge.net/octave/?rev=8450&view=rev Author: paramaniac Date: 2011-08-08 19:32:33 +0000 (Mon, 08 Aug 2011) Log Message: ----------- control: improve feedback help string, remove cruft Modified Paths: -------------- trunk/octave-forge/main/control/inst/@lti/feedback.m Modified: trunk/octave-forge/main/control/inst/@lti/feedback.m =================================================================== --- trunk/octave-forge/main/control/inst/@lti/feedback.m 2011-08-08 16:48:03 UTC (rev 8449) +++ trunk/octave-forge/main/control/inst/@lti/feedback.m 2011-08-08 19:32:33 UTC (rev 8450) @@ -1,4 +1,4 @@ -## Copyright (C) 2009, 2010 Lukas F. Reichlin +## Copyright (C) 2009, 2010, 2011 Lukas F. Reichlin ## ## This file is part of LTI Syncope. ## @@ -24,6 +24,33 @@ ## @deftypefnx {Function File} {@var{sys} =} feedback (@var{sys1}, @var{sys2}, @var{feedin}, @var{feedout}, @var{"+"}) ## Feedback connection of two LTI models. ## +## @strong{Inputs} +## @table @var +## @item sys1 +## LTI model of forward transmission. @code{[p1, m1] = size (sys1)}. +## @item sys2 +## LTI model of backward transmission. +## If not specified, an identity matrix of appropriate size is taken. +## @item feedin +## Vector containing indices of inputs to @var{sys1} which are involved in the feedback loop. +## The number of @var{feedin} indices and outputs of @var{sys2} must be equal. +## If not specified, @code{1:m1} is taken. +## @item feedout +## Vector containing indices of outputs from @var{sys1} which are to be connected to @var{sys2}. +## The number of @var{feedout} indices and inputs of @var{sys2} must be equal. +## If not specified, @code{1:p1} is taken. +## @item "+" +## Positive feedback sign. If not specified, @var{"-"} for a negative feedback interconnection +## is assumed. @var{+1} and @var{-1} are possible as well, but only from the third argument +## onward due to ambiguity. +## @end table +## +## @strong{Outputs} +## @table @var +## @item sys +## Resulting LTI model. +## @end table +## ## @strong{Block Diagram} ## @example ## @group @@ -40,7 +67,7 @@ ## Author: Lukas Reichlin <luk...@gm...> ## Created: October 2009 -## Version: 0.3 +## Version: 0.4 function sys = feedback (sys1, sys2, feedin, feedout, fbsign = -1) @@ -51,7 +78,6 @@ if (p1 != m1) error ("feedback: argument must be a square system"); endif - sys2 = eye (p1); feedin = 1 : m1; feedout = 1 : p1; @@ -61,13 +87,9 @@ if (p1 != m1) error ("feedback: first argument must be a square system"); endif - fbsign = __check_fbsign__ (sys2); sys2 = eye (p1); - feedin = 1 : m1; - feedout = 1 : p1; endif # sys = feedback (sys1, sys2) - feedin = 1 : m1; feedout = 1 : p1; @@ -159,4 +181,4 @@ error ("feedback: invalid feedback sign type"); 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-07-29 12:09:29
|
Revision: 10782 http://octave.svn.sourceforge.net/octave/?rev=10782&view=rev Author: paramaniac Date: 2012-07-29 12:09:22 +0000 (Sun, 29 Jul 2012) Log Message: ----------- control: improve argument checks Modified Paths: -------------- trunk/octave-forge/main/control/inst/@lti/feedback.m Modified: trunk/octave-forge/main/control/inst/@lti/feedback.m =================================================================== --- trunk/octave-forge/main/control/inst/@lti/feedback.m 2012-07-28 22:00:12 UTC (rev 10781) +++ trunk/octave-forge/main/control/inst/@lti/feedback.m 2012-07-29 12:09:22 UTC (rev 10782) @@ -110,6 +110,14 @@ endswitch + if (! is_real_vector (feedin) || ! isequal (feedin, abs (fix (feedin)))) + error ("feedback: require 'feedin' to be a vector of integers"); + endif + + if (! is_real_vector (feedout) || ! isequal (feedout, abs (fix (feedout)))) + error ("feedback: require 'feedout' to be a vector of integers"); + endif + [p2, m2] = size (sys2); l_feedin = length (feedin); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |