获取具有colormap图颜色的矩阵

时间:2014-08-12 07:06:32

标签: matlab

我已经从值矩阵生成了热图,并在其上应用了色彩映射。有没有办法让我为每个方形段创建一个m×3的矩阵?

2 个答案:

答案 0 :(得分:1)

我的理解是你有一个值矩阵(m-by-n),你可以使用颜色贴图进行着色,并且想要获得作为RBG的3D(m-by-n-by-3)矩阵这个彩色矩阵的图像。在这种情况下,尝试:

%//C is your data
C = randn(m,n);

%//d is the number of discrete colour in your colormap and map is your colormap itself.
d=4;
map = jet(d);

%//Normalize C to index map, i.e. make values of C range from 1 to d
C_norm = (C - min(C(:)))./(max(C(:)) - min(C(:)));  %//Normalize to btw [0,1]
C_discrete = ceil(C_norm*(d-1)+1);                  %//Normalize to btw [1,d]

%//Index in map using linearized (i.e. m*n-by-1 vector) version of C
C_mapped = map(C_discrete(:),:);

%//Reshape to m-by-n-by-3
C_RGBreshape(permute(C_mapped, [1, 3, 2]), m, n, 3);

答案 1 :(得分:0)

你的意思是用colormap创建一个矩阵?通常你会反过来做。尝试

cmap = jet(64);
colormap(cmap);

这将colormap指定为cmap作为矩阵,然后将其分配给th轴。我还认为colormap是一个axis属性,可以通过setget函数访问。此外,您可能不想使用jet色彩映射,但当然可以使用任何色彩映射