如何根据数据值在imagesc中定义颜色

时间:2014-10-11 12:22:54

标签: matlab colors matlab-figure

我正在尝试根据我的数据值更改imagesc图上的色标。

我的数据是一个向量,值范围为0-50。

我已经设置了这样的色彩映射:

color = [0  0   0
         linspace(.7,1,6)' linspace(.5,1,6)' linspace(0,0,6)'];

我还设置了一个向量,为数据中的每个值分配不同的索引。

for i=1:length(mydata)

  if (mydata(i)==0)
      index(i)=1;
  elseif(mydata(i)==1)
      index(i)=2;
  elseif(mydata(i)==2)
      index(i)=2;    
  elseif(mydata(i)==3)
      index(i)=3;
  elseif(mydata(i)==4)
      index(i)=3;
  elseif(mydata(i)>5 & mydata(i)<10)
      index(i)=4;
  elseif(mydata(i)>10 & mydata(i)<15)
      index(i)=5;
  elseif(mydata(i)>15 & mydata(i)<20)
      index(i)=6;
  else
      index(i)=7;

  end
end

但是,我现在如何将它传递给imagesc函数?

关于如何解决此问题的任何其他建议? 非常感谢!

1 个答案:

答案 0 :(得分:1)

首先,您需要在循环中将length(mydata)更改为numel(mydata)。否则,您无法访问mydata的所有元素。或者更好,它是矢量化的(没有循环):

index = NaN(size(mydata)); %// preallocate
index(mydata==0) = 1;
index(mydata==1) = 2;
%// etc.

然后使用

imagesc(index); %// display image
colormap(color); %// set your matrix "color" as the colormap
colorbar %// show color bar, if desired