imagesc() automatically scales data so that the minimum value maps to the first color and the maximum value maps to the last color. If your data does not happen to be in the range 0 to 1 for floating point values, or 0 to 255 for uint8, or 0 to 65535 for uint16, then the image that imwrite() creates is not going to be the image you want.
Best Answer