Mercurial > hg > octave-lyh
annotate scripts/image/imagesc.m @ 16466:ac332eb727dd
Simplify calculation of colormaps
* scripts/image/copper.m: Replace slower linspace with range operator.
* scripts/image/hot.m: Add test for n==2 to allow elimination of subsequent
if conditional tests. Replace mod calculation with simpler expression.
* scripts/image/rainbow.m: Replace slower linspace with range operator.
Align columns of calculation for better code readability.
author | Rik <rik@octave.org> |
---|---|
date | Sun, 07 Apr 2013 22:24:34 -0700 |
parents | 806ea52af230 |
children | b5d6314314fc |
rev | line source |
---|---|
14138
72c96de7a403
maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents:
14001
diff
changeset
|
1 ## Copyright (C) 1994-2012 John W. Eaton |
2313 | 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 | |
7016 | 7 ## the Free Software Foundation; either version 3 of the License, or (at |
8 ## your option) any later version. | |
2313 | 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 | |
7016 | 16 ## along with Octave; see the file COPYING. If not, see |
17 ## <http://www.gnu.org/licenses/>. | |
1024 | 18 |
3381 | 19 ## -*- texinfo -*- |
15683
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
20 ## @deftypefn {Function File} {} imagesc (@var{img}) |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
21 ## @deftypefnx {Function File} {} imagesc (@var{x}, @var{y}, @var{img}) |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
22 ## @deftypefnx {Function File} {} imagesc (@dots{}, @var{climits}) |
7189 | 23 ## @deftypefnx {Function File} {} imagesc (@var{h}, @dots{}) |
7650 | 24 ## @deftypefnx {Function File} {@var{h} =} imagesc (@dots{}) |
15683
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
25 ## Display a scaled version of the matrix @var{img} as a color image. The |
7189 | 26 ## colormap is scaled so that the entries of the matrix occupy the entire |
15683
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
27 ## colormap. If @code{@var{climits} = [@var{lo}, @var{hi}]} is given, then that |
14359
7277fe922e99
doc: Use Octave preference for double quote in docstrings in scripts/
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
28 ## range is set to the "clim" of the current axes. |
3651 | 29 ## |
30 ## The axis values corresponding to the matrix elements are specified in | |
4403 | 31 ## @var{x} and @var{y}, either as pairs giving the minimum and maximum |
32 ## values for the respective axes, or as values for each row and column | |
15683
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
33 ## of the matrix @var{img}. |
7189 | 34 ## |
14001
5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents:
11589
diff
changeset
|
35 ## The optional return value @var{h} is a graphics handle to the image. |
8286
6f2d95255911
fix @seealso references to point to existing anchors
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7650
diff
changeset
|
36 ## @seealso{image, imshow, caxis} |
3373 | 37 ## @end deftypefn |
559 | 38 |
3202 | 39 ## Author: Tony Richardson <arichard@stark.cc.oh.us> |
2312 | 40 ## Created: July 1994 |
41 ## Adapted-By: jwe | |
904 | 42 |
15683
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
43 function h = imagesc (varargin) |
7189 | 44 |
15683
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
45 if (nargin < 1 || nargin > 4) |
7189 | 46 print_usage (); |
47 elseif (isscalar (varargin{1}) && ishandle (varargin{1})) | |
15683
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
48 harg = varargin{1}; |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
49 if (! strcmp (get (harg, "type"), "axes")) |
7189 | 50 error ("imagesc: expecting first argument to be an axes object"); |
51 endif | |
52 oldh = gca (); | |
53 unwind_protect | |
54 axes (h); | |
15683
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
55 htmp = __imagesc__ (harg, varargin{2:end}); |
7189 | 56 unwind_protect_cleanup |
57 axes (oldh); | |
58 end_unwind_protect | |
59 else | |
15683
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
60 htmp = __imagesc__ (gca (), varargin{:}); |
7189 | 61 endif |
62 | |
63 if (nargout > 0) | |
15683
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
64 h = htmp; |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
65 endif |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
66 |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
67 endfunction |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
68 |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
69 function h = __imagesc__ (ax, x, y, img, climits) |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
70 |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
71 if (nargin == 2) |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
72 img = x; |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
73 x = y = climits = []; |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
74 elseif (nargin == 3) |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
75 img = x; |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
76 climits = y; |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
77 x = y = []; |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
78 elseif (nargin == 4 && ! isscalar (x) && ! isscalar (y) && ! isscalar (img)) |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
79 climits = []; |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
80 endif |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
81 |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
82 h = image (ax, x, y, img); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
83 set (h, "cdatamapping", "scaled"); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
84 |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
85 ## use given climits or guess them from the matrix |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
86 if (numel (climits) == 2 && climits(1) <= climits(2)) |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
87 set (ax, "clim", climits); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
88 elseif (! isempty (climits)) |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
89 error ("imagesc: CLIMITS must be in form [lo, hi]"); |
7189 | 90 endif |
91 | |
92 endfunction | |
93 | |
15683
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
94 |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
95 %!demo |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
96 %! clf; |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
97 %! colormap ("default"); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
98 %! img = 1 ./ hilb (11); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
99 %! x = y = -5:5; |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
100 %! subplot (2,2,1); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
101 %! h = imagesc (x, y, img); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
102 %! ylabel ("limits = [-5.5, 5.5]"); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
103 %! title ("imagesc (x, y, img)"); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
104 %! subplot (2,2,2); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
105 %! h = imagesc (-x, y, img); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
106 %! title ("imagesc (-x, y, img)"); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
107 %! subplot (2,2,3); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
108 %! h = imagesc (x, -y, img); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
109 %! title ("imagesc (x, -y, img)"); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
110 %! ylabel ("limits = [-5.5, 5.5]"); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
111 %! subplot (2,2,4); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
112 %! h = imagesc (-x, -y, img); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
113 %! title ("imagesc (-x, -y, img)"); |
559 | 114 |
15683
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
115 %!demo |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
116 %! clf; |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
117 %! colormap ("default"); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
118 %! g = 0.1:0.1:10; |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
119 %! h = g'*g; |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
120 %! imagesc (g, g, sin (h)); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
121 %! hold on; |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
122 %! imagesc (g, g+12, cos (h/2)); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
123 %! axis ([0 10 0 22]); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
124 %! hold off; |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
125 %! title ("two consecutive images"); |
6368 | 126 |
15683
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
127 %!demo |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
128 %! clf; |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
129 %! colormap ("default"); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
130 %! g = 0.1:0.1:10; |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
131 %! h = g'*g; |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
132 %! imagesc (g, g, sin (h)); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
133 %! hold all; |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
134 %! plot (g, 11.0 * ones (size (g))); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
135 %! imagesc (g, g+12, cos (h/2)); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
136 %! axis ([0 10 0 22]); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
137 %! hold off; |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
138 %! title ("image, line, image"); |
559 | 139 |
15683
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
140 %!demo |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
141 %! clf; |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
142 %! colormap ("default"); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
143 %! g = 0.1:0.1:10; |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
144 %! h = g'*g; |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
145 %! plot (g, 10.5 * ones (size (g))); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
146 %! hold all; |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
147 %! imagesc (g, g, sin (h)); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
148 %! plot (g, 11.0 * ones (size (g))); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
149 %! imagesc (g, g+12, cos (h/2)); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
150 %! plot (g, 11.5 * ones (size (g))); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
151 %! axis ([0 10 0 22]); |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
152 %! hold off; |
806ea52af230
Overhaul m-files in image directory to provide better support for images stored as integers.
Rik <rik@octave.org>
parents:
14359
diff
changeset
|
153 %! title ("line, image, line, image, line"); |
7189 | 154 |