From: <par...@us...> - 2012-08-24 16:27:49
|
Revision: 10911 http://octave.svn.sourceforge.net/octave/?rev=10911&view=rev Author: paramaniac Date: 2012-08-24 16:27:38 +0000 (Fri, 24 Aug 2012) Log Message: ----------- control: add some checks Modified Paths: -------------- trunk/octave-forge/main/control/inst/sensitivity.m Modified: trunk/octave-forge/main/control/inst/sensitivity.m =================================================================== --- trunk/octave-forge/main/control/inst/sensitivity.m 2012-08-24 16:13:36 UTC (rev 10910) +++ trunk/octave-forge/main/control/inst/sensitivity.m 2012-08-24 16:27:38 UTC (rev 10911) @@ -87,11 +87,6 @@ function [ret, ws] = sensitivity (G, varargin) - ## TODO: show nyquist diagram of L with circle - ## center (-1, 0) and radius equal to the - ## shortest distance 1/Ms, frequency w is - ## [Ms, w] = norm (S, inf) - if (nargin == 0) print_usage (); elseif (nargin == 1) # L := G @@ -111,9 +106,13 @@ if (length (Ms) > 1) error ("sensitivity: plotting only works for a single controller"); endif + if (! issiso (L)) + error ("sensitivity: Nyquist plot requires SISO systems"); + endif if (iscell (L)) L = L{1}; endif + [H, w] = __frequency_response__ (L, [], false, 0, "ext"); H = H(:); re = real (H); @@ -121,6 +120,7 @@ Hs = freqresp (L, ws); res = real (Hs); ims = imag (Hs); + plot (re, im, "b", [-1, res], [0, ims], "r") axis ("equal") xlim (__axis_margin__ (xlim)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |