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

Matlab 如何根据数据值定义imagesc中的颜色,matlab,colors,matlab-figure,Matlab,Colors,Matlab Figure,我正试图根据我的数据值更改imagesc plot上的颜色比例 我的数据是一个向量,值在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(myd

我正试图根据我的数据值更改imagesc plot上的颜色比例

我的数据是一个向量,值在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
i=1的
长度(mydata)
如果(mydata(i)==0)
指数(i)=1;
elseif(mydata(i)==1)
指数(i)=2;
elseif(mydata(i)==2)
指数(i)=2;
elseif(mydata(i)=3)
指数(i)=3;
elseif(mydata(i)==4)
指数(i)=3;

elseif(mydata(i)>5&mydata(i)10&mydata(i)15&mydata(i)首先,您需要将循环中的
length(mydata)
更改为
numel(mydata)
。否则您无法访问
mydata
的所有元素。或者更好的做法是,将其矢量化(无循环):

那就用

imagesc(index); %// display image
colormap(color); %// set your matrix "color" as the colormap
colorbar %// show color bar, if desired
imagesc(索引)!是的!我自己才意识到!非常感谢!!
imagesc(index); %// display image
colormap(color); %// set your matrix "color" as the colormap
colorbar %// show color bar, if desired