From: <par...@us...> - 2012-01-18 14:41:27
|
Revision: 9532 http://octave.svn.sourceforge.net/octave/?rev=9532&view=rev Author: paramaniac Date: 2012-01-18 14:41:16 +0000 (Wed, 18 Jan 2012) Log Message: ----------- control: support frequency response in the range {wmin, wmax}, e.g. bode (sys, {wmin, wmax}) Modified Paths: -------------- trunk/octave-forge/main/control/inst/__frequency_response__.m trunk/octave-forge/main/control/inst/__frequency_vector__.m Modified: trunk/octave-forge/main/control/inst/__frequency_response__.m =================================================================== --- trunk/octave-forge/main/control/inst/__frequency_response__.m 2012-01-18 14:02:54 UTC (rev 9531) +++ trunk/octave-forge/main/control/inst/__frequency_response__.m 2012-01-18 14:41:16 UTC (rev 9532) @@ -1,4 +1,4 @@ -## Copyright (C) 2009, 2010 Lukas F. Reichlin +## Copyright (C) 2009, 2010, 2012 Lukas F. Reichlin ## ## This file is part of LTI Syncope. ## @@ -21,7 +21,7 @@ ## Author: Lukas Reichlin <luk...@gm...> ## Created: November 2009 -## Version: 0.2 +## Version: 0.3 function [H, w] = __frequency_response__ (sys, w = [], mimoflag = 0, resptype = 0, wbounds = "std", cellflag = false) @@ -42,6 +42,8 @@ endif elseif (isempty (w)) # find interesting frequency range w if not specified w = __frequency_vector__ (sys, wbounds); + elseif (iscell (w) && numel (w) == 2 && issample (w{1}) && issample (w{2})) + w = __frequency_vector__ (sys, wbounds, w{1}, w{2}); elseif (! is_real_vector (w)) error ("frequency_response: second argument w must be a vector of frequencies"); endif Modified: trunk/octave-forge/main/control/inst/__frequency_vector__.m =================================================================== --- trunk/octave-forge/main/control/inst/__frequency_vector__.m 2012-01-18 14:02:54 UTC (rev 9531) +++ trunk/octave-forge/main/control/inst/__frequency_vector__.m 2012-01-18 14:41:16 UTC (rev 9532) @@ -35,9 +35,9 @@ ## Adapted-By: Lukas Reichlin <luk...@gm...> ## Date: October 2009 -## Version: 0.2 +## Version: 0.3 -function w = __frequency_vector__ (sys, wbounds = "std") +function w = __frequency_vector__ (sys, wbounds = "std", wmin, wmax) zer = zero (sys); pol = pole (sys); @@ -119,6 +119,11 @@ dec_max = log10 (pi/tsam); endif + if (nargin == 4) # w = {wmin, wmax} + dec_min = log10 (wmin); + dec_max = log10 (wmax); + endif + ## create frequency vector zp = [abs(zer), abs(pol)]; idx = find (zp > 10^dec_min & zp < 10^dec_max); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |