Mercurial > hg > octave-lyh
changeset 3651:c2305b99fbd7
[project @ 2000-03-31 07:12:29 by jwe]
author | jwe |
---|---|
date | Fri, 31 Mar 2000 07:12:30 +0000 |
parents | b3a57a1369f8 |
children | 25e84fcef38a |
files | scripts/ChangeLog scripts/image/image.m scripts/image/imagesc.m |
diffstat | 3 files changed, 64 insertions(+), 24 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/ChangeLog +++ b/scripts/ChangeLog @@ -1,3 +1,11 @@ +2000-03-31 Paul Kienzle <pkienzle@kienzle.powernet.co.uk> + + * image/image.m: Allow image (A) or image (x, y, A). + * image/imagesc.m: Likewise. + + * image/image.m: If zoom is not supplied, or if it is an empty + matrix, autoscale the image. + 2000-03-22 John W. Eaton <jwe@bevo.che.wisc.edu> * plot/title.m, plot/bottom_title.m, plot/top_title.m:
--- a/scripts/image/image.m +++ b/scripts/image/image.m @@ -19,10 +19,14 @@ ## -*- texinfo -*- ## @deftypefn {Function File} {} image (@var{x}, @var{zoom}) +## @deftypefnx {Function File} {} image (@var{x}, @var{y}, @var{A}, @var{zoom}) ## Display a matrix as a color image. The elements of @var{x} are indices ## into the current colormap and should have values between 1 and the -## length of the colormap. If @var{zoom} is omitted, a value of 4 is -## assumed. +## length of the colormap. If @var{zoom} is omitted, the image will be +## scaled to fit within 600x350 (to a max of 4). +## +## The axis values corresponding to the matrix elements are specified in +## @var{x} and @var{y}. At present they are ignored. ## @end deftypefn ## @seealso{imshow, imagesc, and colormap} @@ -30,21 +34,39 @@ ## Created: July 1994 ## Adapted-By: jwe -function image (x, zoom) +function image (x, y, A, zoom) if (nargin == 0) ## Load Bobbie Jo Richardson (Born 3/16/94) x = loadimage ("default.img"); zoom = 2; elseif (nargin == 1) - zoom = 4; - elseif (nargin > 2) - usage ("image (matrix, [zoom])"); + A = x; + zoom = []; + x = y = []; + elseif (nargin == 2) + A = x; + zoom = y; + x = y = []; + elseif (nargin == 3) + zoom = []; + elseif (nargin > 4) + usage ("image (matrix, zoom) or image (x, y, matrix, zoom)"); endif + if isempty(zoom) + ## Find an integer scale factor which sets the image to + ## approximately the size of the screen. + zoom = min ([350/rows(A), 600/columns(A), 4]); + if (zoom >= 1) + zoom = floor (zoom); + else + zoom = 1 / ceil (1/zoom); + endif + endif ppm_name = tmpnam (); - saveimage (ppm_name, x, "ppm"); + saveimage (ppm_name, A, "ppm"); ## Start the viewer. Try xv, then xloadimage. @@ -57,9 +79,7 @@ ## Need to let the shell clean up the tmp file because we are putting ## the viewer in the background. - command = sprintf ("( %s || %s && %s ) > /dev/null 2>&1 &", - xv, xloadimage, rm); - - system (command); + system (sprintf ("( %s || %s && %s ) > /dev/null 2>&1 &", + xv, xloadimage, rm)); endfunction
--- a/scripts/image/imagesc.m +++ b/scripts/image/imagesc.m @@ -18,11 +18,15 @@ ## 02111-1307, USA. ## -*- texinfo -*- -## @deftypefn {Function File} {} imagesc (@var{x}, @var{zoom}) -## Display a scaled version of the matrix @var{x} as a color image. The +## @deftypefn {Function File} {} imagesc (@var{A}, @var{zoom}) +## @deftypefnx {Function File} {} imagesc (@var{x}, @var{y}, @var{A}, @var{zoom}) +## Display a scaled version of the matrix @var{A} as a color image. The ## matrix is scaled so that its entries are indices into the current ## colormap. The scaled matrix is returned. If @var{zoom} is omitted, a -## value of 4 is assumed. +## comfortable size is chosen. +## +## The axis values corresponding to the matrix elements are specified in +## @var{x} and @var{y}. At present they are ignored. ## @end deftypefn ## @seealso{image and imshow} @@ -30,29 +34,37 @@ ## Created: July 1994 ## Adapted-By: jwe -function y = imagesc (x, zoom) +function B = imagesc (x, y, A, zoom) - if (nargin < 1 || nargin > 2) - usage ("imagesc (matrix, [zoom])"); + if (nargin < 1 || nargin > 4) + usage ("imagesc (matrix, zoom) or imagesc (x, y, matrix, zoom)"); elseif (nargin == 1) - zoom = 4; + A = x; + zoom = []; + x = y = []; + elseif (nargin == 2) + A = x; + zoom = y; + x = y = []; + elseif (nargin == 3) + zoom = []; endif - [ high, wide ] = size (x); + [high, wide] = size (A); - maxval = max (max (x)); - minval = min (min (x)); + maxval = max (max (A)); + minval = min (min (A)); ## Rescale matrix so that all values are in the range 0 to ## length (colormap) inclusive. if (maxval == minval) - y = ones (high, wide); + B = ones (high, wide); else ## Rescale values to between 1 and length (colormap) inclusive. - y = round ((x - minval) / (maxval - minval) * (rows (colormap) - 1)) + 1; + B = round ((A - minval) / (maxval - minval) * (rows (colormap) - 1)) + 1; endif - image (y, zoom); + image (x, y, B, zoom); endfunction