Mercurial > forge
changeset 10725:c573aaa8f2d4 octave-forge
control: add some checks
author | paramaniac |
---|---|
date | Fri, 24 Aug 2012 16:27:38 +0000 |
parents | ed06355bdf36 |
children | 6005d2ebb778 |
files | main/control/inst/sensitivity.m |
diffstat | 1 files changed, 5 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/main/control/inst/sensitivity.m Fri Aug 24 16:13:36 2012 +0000 +++ b/main/control/inst/sensitivity.m Fri Aug 24 16:27:38 2012 +0000 @@ -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))