Mercurial > hg > octave-nkf
annotate scripts/plot/feather.m @ 12541:dd2c70b30f28
Add tests for ifftshift.m
author | Robert T. Short <octave@phaselockedsystems.com.com> |
---|---|
date | Sat, 26 Mar 2011 06:50:12 -0700 |
parents | c792872f8942 |
children | 5f0bb45e615c |
rev | line source |
---|---|
11523 | 1 ## Copyright (C) 2007-2011 David Bateman |
7322 | 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 -*- | |
10793
be55736a0783
Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
20 ## @deftypefn {Function File} {} feather (@var{u}, @var{v}) |
7322 | 21 ## @deftypefnx {Function File} {} feather (@var{z}) |
22 ## @deftypefnx {Function File} {} feather (@dots{}, @var{style}) | |
23 ## @deftypefnx {Function File} {} feather (@var{h}, @dots{}) | |
24 ## @deftypefnx {Function File} {@var{h} =} feather (@dots{}) | |
25 ## | |
26 ## Plot the @code{(@var{u}, @var{v})} components of a vector field emanating | |
9040
dbd0c77e575e
Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
27 ## from equidistant points on the x-axis. If a single complex argument |
7322 | 28 ## @var{z} is given, then @code{@var{u} = real (@var{z})} and |
29 ## @code{@var{v} = imag (@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 ## | |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
34 ## The optional return value @var{h} provides a list of handles to the |
7322 | 35 ## the parts of the vector field (body, arrow and marker). |
36 ## | |
37 ## @example | |
38 ## @group | |
39 ## phi = [0 : 15 : 360] * pi / 180; | |
40 ## feather (sin (phi), cos (phi)) | |
41 ## @end group | |
42 ## @end example | |
43 ## | |
44 ## @seealso{plot, quiver, compass} | |
45 ## @end deftypefn | |
46 | |
47 function retval = feather (varargin) | |
48 | |
49 [h, varargin, nargin] = __plt_get_axis_arg__ ("feather", varargin{:}); | |
50 | |
51 arrowsize = 0.25; | |
52 | |
9502
69a57c59868c
compass.m, feather.m: simplify argument processing
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
53 if (nargin == 0) |
69a57c59868c
compass.m, feather.m: simplify argument processing
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
54 print_usage (); |
69a57c59868c
compass.m, feather.m: simplify argument processing
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
55 elseif (nargin == 1 || (nargin == 2 && ! isnumeric (varargin{2}))) |
7322 | 56 ioff = 2; |
9502
69a57c59868c
compass.m, feather.m: simplify argument processing
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
57 z = varargin{1}(:).'; |
7322 | 58 u = real (z); |
59 v = imag (z); | |
9502
69a57c59868c
compass.m, feather.m: simplify argument processing
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
60 elseif (nargin > 1 && isnumeric (varargin{2})) |
7322 | 61 ioff = 3; |
9502
69a57c59868c
compass.m, feather.m: simplify argument processing
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
62 u = varargin{1}(:).'; |
69a57c59868c
compass.m, feather.m: simplify argument processing
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
63 v = varargin{2}(:).'; |
7322 | 64 endif |
65 | |
66 line_spec = "b-"; | |
9502
69a57c59868c
compass.m, feather.m: simplify argument processing
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
67 have_line_spec = false; |
7322 | 68 while (ioff <= nargin) |
69 arg = varargin{ioff++}; | |
7768
a2d9f325b65a
Use isschar instead of deprecated isstr
Rafael Laboissiere <rafael@debian.org>
parents:
7322
diff
changeset
|
70 if ((ischar (arg) || iscell (arg)) && ! have_line_spec) |
7322 | 71 [linespec, valid] = __pltopt__ ("feather", arg, false); |
72 if (valid) | |
10549 | 73 line_spec = arg; |
74 have_line_spec = false; | |
75 break; | |
7322 | 76 else |
10549 | 77 error ("feather: invalid linespec"); |
7322 | 78 endif |
79 else | |
80 error ("feather: unrecognized argument"); | |
81 endif | |
82 endwhile | |
83 | |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
84 ## Matlab draws feather plots, with the arrow head as one continous |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
85 ## line, and each arrow separately. This is completely different than |
7322 | 86 ## quiver and quite ugly. |
87 n = length (u); | |
88 xend = [1 : n] + u; | |
89 xtmp = [1 : n] + u .* (1 - arrowsize); | |
90 yend = v; | |
91 ytmp = v .* (1 - arrowsize); | |
92 x = [[1 : n]; xend; xtmp - v * arrowsize; xend; ... | |
93 xtmp + v * arrowsize]; | |
94 y = [zeros(1, n); yend; ytmp + u * arrowsize / 3; yend; ... | |
95 ytmp - u * arrowsize / 3]; | |
96 | |
97 oldh = gca (); | |
98 unwind_protect | |
99 axes (h); | |
100 newplot (); | |
101 hlist = plot (h, x, y, line_spec, [1, n], [0, 0], line_spec); | |
102 unwind_protect_cleanup | |
103 axes (oldh); | |
104 end_unwind_protect | |
105 | |
106 if (nargout > 0) | |
107 retval = hlist; | |
108 endif | |
109 | |
110 endfunction | |
111 | |
112 %!demo | |
113 %! phi = [0 : 15 : 360] * pi / 180; | |
114 %! feather (sin (phi), cos (phi)) |