mat2im
This code snippet converts a 2D matrix to a 3D matrix where the values in the 3rd dimension correspond to pixel intensity in the red, green, and blue domains. This is the format used by many functions in the Image Processing Toolbox (which is not required for this function to run).
The code works by mapping the values of matrix "mat" onto the rows of colormap "cmap" using a fast vectorised operation.
 function im=mat2im(mat,cmap,maxVal)
 
  PURPOSE
  Uses vectorized code to convert matrix "mat" to an m-by-n-by-3
  image matrix which can be handled by the Mathworks image-processing
  functions. The the image is created using a specified color-map
  and, optionally, a specified maximum value. Note that it discards
  negative values!
 
  INPUTS
  mat     - an m-by-n matrix  
  cmap    - an m-by-3 color-map matrix. e.g. hot(100). If the colormap has 
            few rows (e.g. less than 20 or so) then the image will appear 
            contour-like.
  limits  - by default the image is normalised to it's max and min values
            so as to use the full dynamic range of the
            colormap. Alternatively, it may be normalised to between
            limits(1) and limits(2). Nan values in limits are ignored. So
            to clip the max alone you would do, for example, [nan, 2]
           
 
  OUTPUTS
  im - an m-by-n-by-3 image matrix  
 
 
  Example 1 - combine multiple color maps on one figure 
  clf, colormap jet, r=rand(40);
  subplot(1,3,1),imagesc(r), axis equal off , title('jet')
  subplot(1,3,2),imshow(mat2im(r,hot(100))) , title('hot')
  subplot(1,3,3),imshow(mat2im(r,summer(100))), title('summer')
  colormap winter %changes colormap in only the first panel
 
  Example 2 - clipping
  p=peaks(128); J=jet(100);
  subplot(2,2,1), imshow(mat2im(p,J)); title('Unclipped')
  subplot(2,2,2), imshow(mat2im(p,J,[0,nan])); title('Remove pixels <0')
  subplot(2,2,3), imshow(mat2im(p,J,[nan,0])); title('Remove pixels >0')
  subplot(2,2,4), imshow(mat2im(p,J,[-1,3])); title('Plot narrow pixel range')
 
  Rob Campbell - April 2009
 
  See Also: ind2rgb
Cite As
Rob Campbell (2025). mat2im (https://uk.mathworks.com/matlabcentral/fileexchange/26322-mat2im), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform Compatibility
Windows macOS LinuxCategories
Tags
Acknowledgements
Inspired by: real2rgb & colormaps
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Discover Live Editor
Create scripts with code, output, and formatted text in a single executable document.
| Version | Published | Release Notes | |
|---|---|---|---|
| 1.4.0.0 | Fixed bug that stopped the image being correctly scaled if user specified max or min values outside of the image range. | ||
| 1.3.0.0 | Switch to 1 based indexing if mat is not a double. | ||
| 1.2.0.0 | Add H1 line, add ability clip at min or max values, improve error checking, improve comments, add a second example. | ||
| 1.1.0.0 | Image Processing tlbx isn't required. | ||
| 1.0.0.0 | 
