MATLAB: How to limit the range of a colormap when using imwrite

colormapimage processingimwrite

I want to save an image with imwrite and get the same output as the code below displays on screen
figure,imagesc(rhoi),
colormap(jet)
caxis([.45*min(rhoi(:)) 0*.55*max(rhoi(:))])
Is it possible to set a caxis property for imwrite?
imwrite(rhoi,jet,'out.png')
EDIT: I have included the full code. Basically, I want the last image RGB to look the same as that displayed by imagesc at each stage.
clear all
close all
clc
Inner = 0; % inner radius of the colour ring
rOuter = 150; % outer radius of the colour ring
[x, y] = meshgrid(-rOuter:.1:rOuter);
[theta, rho] = cart2pol(x, y);
rhoi=imcomplement(rho);
cmap=jet(256);
rhoi2=rhoi;
rhoi2=(rhoi2-min(rhoi2(:)))/(max(rhoi2(:))-min(rhoi2(:)));
figure;imagesc(rhoi2),colormap(cmap);
caxis([.55 .95])
rhoi2(rhoi2<.55) = .55;
rhoi2(rhoi2> .95) = .95;
figure,imagesc(rhoi2)
colormap( cmap);
X=uint8(256*rhoi2);
figure;imagesc(X),colormap( cmap);
RGB=ind2rgb(X,cmap);
figure;imshow(RGB)

Best Answer

Before the call to ind2rgb (or imwrite), you need to rescale your matrix as colour indices so that the minimum is index 1 (for type double, 0 for type uint8) and maximum is index 256 (255 for uint8):
X = round(1 + (rhoi2 - min(rhoi2(:))) * 255 / (max(rhoi2(:)) - min(rhoi2(:)))); %using double
RGB = ind2rgb(X, cmap);
figure; imshow(RGB);