我一直试图从矩阵中获取图像。最初我将矩阵转换为具有5个级别的灰度图像。我想知道是否可以做同样的事情来使灰度图像成为一个颜色,即说我有一个值2.2并且我需要它是深蓝色,是否有任何内置函数以这种方式映射值还可以将所有5个级别映射到不同的颜色吗?
将以下内容视为我的矩阵
x = [ 2.2 2.2 2.2 2.6
2.2 2.3 2.4 2.5
2.3 2.7 2.5 2.2
2.6 2.2 2.2 2.2]
我需要按照以下方式绘制水平图,这样当我将其转换为图像时,我应该在输出图像中获取颜色。
2.2--> Dark blue
2.3--> Blue
2.4--> Green
2.5--> Yellow
2.6--> Orange
2.7--> Red
我该怎么办?请帮忙..谢谢!!
答案 0 :(得分:1)
您可以更改您绘制的轴的ColorOrder
,然后使用imagesc
。如果您事先不知道x
矩阵将具有多少不同的值,则必须创建比下面的解决方案更具动态性的色彩映射。
% Create your own "colormap"
imgColor = [...
0 0 0.5; ... % Dark blue
0 0 1; ... % Blue
0 0.8 0; ... % Green
1 1 0; ... % Yellow
1 0.5 0; ... % Orange
1 0 0 ... % Red
];
% Create an axes and set your color order
a = axes;
a.ColorOrder = imgColor;
% Draw image
imagesc(x)
您也可以尝试使用colormap editor来改变颜色。要打开,只需输入:
colormapeditor
答案 1 :(得分:1)
你可以这样做:
unique
整数,以便每个整数代表原始值之一imagesc
显示整数值矩阵。colormap
。这确保了每个原始值的方式,无论它们的分离如何,都将对应不同的颜色。
x = [ 2.2 2.2 2.2 2.6
2.2 2.3 2.4 2.5
2.3 2.7 2.5 2.2
2.6 2.2 2.2 2.2]; % example matrix
colors = [0 0 .6; 0 .6 1; 0 .8 0; 1 .9 0; 1 .5 0; .8 0 0]; % desired colors
[~, ~, xu] = unique(x); % step 1
xu = reshape(xu, size(x));
imagesc(xu) % step 2
colormap(colors) % step 3