diff scripts/plot/polar.m @ 7207:71c03c7239fb

[project @ 2007-11-28 02:19:25 by jwe]
author jwe
date Wed, 28 Nov 2007 02:20:48 +0000
parents 55ff2d9a27c7
children dd88d61d443f
line wrap: on
line diff
--- a/scripts/plot/polar.m
+++ b/scripts/plot/polar.m
@@ -30,34 +30,39 @@
 
 function retval = polar (varargin)
 
-  newplot ();
+  [h, varargin] = __plt_get_axis_arg__ ("loglogerr", varargin{:});
+  oldh = gca ();
+  unwind_protect
+    axes (h);
+    newplot ();
 
-  ## [h, varargin] = __plt_get_axis_arg__ ("semilogx", varargin{:});
-  h = gca ();
+    nargs = numel (varargin);
 
-  nargs = numel (varargin);
-
-  if (nargs == 3)
-    if (! ischar (varargin{3}))
-      error ("polar: third argument must be a string");
+    if (nargs == 3)
+      if (! ischar (varargin{3}))
+	error ("polar: third argument must be a string");
+      endif
+      tmp = __plr2__ (h, varargin{:});
+    elseif (nargin == 2)
+      if (ischar (varargin{2}))
+	tmp = __plr1__ (h, varargin{:});
+      else
+	fmt = "";
+	tmp = __plr2__ (h, varargin{:}, fmt);
+      endif
+    elseif (nargin == 1)
+      fmt = "";
+      tmp = __plr1__ (h, varargin{:}, fmt);
+    else
+      print_usage ();
     endif
-    tmp = __plr2__ (h, varargin{:});
-  elseif (nargin == 2)
-    if (ischar (varargin{2}))
-      tmp = __plr1__ (h, varargin{:});
-    else
-      fmt = "";
-      tmp = __plr2__ (h, varargin{:}, fmt);
+
+    if (nargout > 0)
+      retval = tmp;
     endif
-  elseif (nargin == 1)
-    fmt = "";
-    tmp = __plr1__ (h, varargin{:}, fmt);
-  else
-    print_usage ();
-  endif
 
-  if (nargout > 0)
-    retval = tmp;
-  endif
+  unwind_protect_cleanup
+    axes (oldh);
+  end_unwind_protect
 
 endfunction