Mercurial > hg > octave-nkf
annotate scripts/plot/compass.m @ 11885:3342d1a7c4c9 release-3-0-x
spelling corrections
Here is a patch with some spelling corrections to the manual.
changeset: 8308:aeaf884ea9af
user: Brian Gough <bjg@gnu.org>
date: Fri Nov 07 09:26:17 2008 -0500
summary: [docs] assoicated => associated
author | Brian Gough<bjg@network-theory.co.uk> |
---|---|
date | Thu, 20 Nov 2008 08:39:44 +0100 |
parents | c5d9aaeb306a |
children | eb63fbe60fab |
rev | line source |
---|---|
7322 | 1 ## Copyright (C) 2007 David Bateman |
2 ## | |
3 ## This file is part of Octave. | |
4 ## | |
5 ## Octave is free software; you can redistribute it and/or modify it | |
6 ## under the terms of the GNU General Public License as published by | |
7 ## the Free Software Foundation; either version 3 of the License, or (at | |
8 ## your option) any later version. | |
9 ## | |
10 ## Octave is distributed in the hope that it will be useful, but | |
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 ## General Public License for more details. | |
14 ## | |
15 ## You should have received a copy of the GNU General Public License | |
16 ## along with Octave; see the file COPYING. If not, see | |
17 ## <http://www.gnu.org/licenses/>. | |
18 | |
19 ## -*- texinfo -*- | |
20 ## @deftypefn {Function File} {} compass (@var{u}, @var{v}) | |
21 ## @deftypefnx {Function File} {} compass (@var{z}) | |
22 ## @deftypefnx {Function File} {} compass (@dots{}, @var{style}) | |
23 ## @deftypefnx {Function File} {} compass (@var{h}, @dots{}) | |
24 ## @deftypefnx {Function File} {@var{h} =} compass (@dots{}) | |
25 ## | |
26 ## Plot the @code{(@var{u}, @var{v})} components of a vector field emanating | |
27 ## from the origin of a polar polt. If a single complex argument @var{z} is | |
28 ## given, then @code{@var{u} = real (@var{z})} and @code{@var{v} = imag | |
29 ## (@var{z})}. | |
30 ## | |
31 ## The style to use for the plot can be defined with a line style @var{style} | |
32 ## in a similar manner to the line styles used with the @code{plot} command. | |
33 ## | |
34 ## The optional return value @var{h} provides a list of handles to the | |
35 ## the parts of the vector field (body, arrow and marker). | |
36 ## | |
37 ## @example | |
38 ## @group | |
39 ## a = toeplitz([1;randn(9,1)],[1,randn(1,9)]); | |
40 ## compass (eig (a)) | |
41 ## @end group | |
42 ## @end example | |
43 ## | |
44 ## @seealso{plot, polar, quiver, feather} | |
45 ## @end deftypefn | |
46 | |
47 function retval = compass (varargin) | |
48 | |
49 [h, varargin, nargin] = __plt_get_axis_arg__ ("compass", varargin{:}); | |
50 | |
51 arrowsize = 0.25; | |
52 firstnonnumeric = Inf; | |
53 for i = 1:nargin | |
54 if (! isnumeric (varargin{i})) | |
55 firstnonnumeric = i; | |
56 break; | |
57 endif | |
58 endfor | |
59 | |
60 if (nargin < 2 || firstnonnumeric < 2) | |
61 ioff = 2; | |
62 z = varargin {1} (:) .'; | |
63 u = real (z); | |
64 v = imag (z); | |
65 else | |
66 ioff = 3; | |
67 u = varargin {1} (:) .'; | |
68 v = varargin {2} (:) .'; | |
69 endif | |
70 | |
71 line_spec = "b-"; | |
72 while (ioff <= nargin) | |
73 arg = varargin{ioff++}; | |
11777
c5d9aaeb306a
use ischar instead of isstr
John W. Eaton <jwe@octave.org>
parents:
7322
diff
changeset
|
74 if ((ischar (arg) || iscell (arg)) && ! have_line_spec) |
7322 | 75 [linespec, valid] = __pltopt__ ("compass", arg, false); |
76 if (valid) | |
77 line_spec = arg; | |
78 break; | |
79 else | |
80 error ("compass: invalid linespec"); | |
81 endif | |
82 else | |
83 error ("compass: unrecognized argument"); | |
84 endif | |
85 endwhile | |
86 | |
87 ## Matlab draws compass plots, with the arrow head as one continous | |
88 ## line, and each arrow separately. This is completely different than | |
89 ## quiver and quite ugly. | |
90 n = length (u); | |
91 xend = u; | |
92 xtmp = u .* (1 - arrowsize); | |
93 yend = v; | |
94 ytmp = v .* (1 - arrowsize); | |
95 x = [zeros(1, n); xend; xtmp - v * arrowsize / 3; xend; ... | |
96 xtmp + v * arrowsize / 3]; | |
97 y = [zeros(1, n); yend; ytmp + u * arrowsize / 3; yend; ... | |
98 ytmp - u * arrowsize / 3]; | |
99 [r, p] = cart2pol (x, y); | |
100 | |
101 oldh = gca (); | |
102 unwind_protect | |
103 axes (h); | |
104 newplot (); | |
105 hlist = polar (h, r, p, line_spec); | |
106 unwind_protect_cleanup | |
107 axes (oldh); | |
108 end_unwind_protect | |
109 | |
110 if (nargout > 0) | |
111 retval = hlist; | |
112 endif | |
113 | |
114 endfunction | |
115 | |
116 %!demo | |
117 %! a = toeplitz([1;randn(9,1)],[1,randn(1,9)]); | |
118 %! compass (eig (a)) |