2012-08-10 593 views
0

colormap如何在matlab范围内?下面的例子似乎表明它不是词法范围的,因为在代码块内设置的值可以在该块外部访问。色图的范围

% example 1 
for i=1:3 
    colormap('gray'); 
    subplot(2,2,i); 
    imagesc(eye(5)); 
end 
subplot(2,2,4); 
imagesc(eye(5)); 

此外,它的定义似乎取决于是否有其他功能(例如,figure)被调用。在以下两个示例中,根据是否调用其他函数,colormap似乎是动态范围的。

% example 2 
colormap(gray); 
for i=1:4 
    subplot(2,2,i); 
    imagesc(eye(5)); 
end 

% example 3 
colormap(gray); 
figure; 
for i=1:4 
    subplot(2,2,i); 
    imagesc(eye(5)); 
end 

在 '例2中,' 灰色色彩映射被应用到每个image。在'示例3'中,默认colormapjet)用于每个image,这表示调用函数figure取代先前的colormap定义,将它们重置为默认值。其他函数调用还有哪些属性?

最后,调用colormap('default')有什么影响?鉴于我以前的假设,调用figurecolormap重置为默认值,下面的代码不会像我所预期的那样产生具有graycolormap的图像。相反,所有数字都使用jetcolormapgraycolormap是什么意思?

% example 4 
colormap(gray); 
colormap('default'); 
figure; 
for i=1:4 
    subplot(2,2,i); 
    imagesc(eye(5)); 
end 

回答

4

同一图中的所有相关图形对象共享一个颜色映射表。每个图都在'colormap'属性中维护一个色彩图。例如:get(gcf,'colormap')

colormap('NAME')适用于本图。这具有set(gcf,'ColorMap',cm)的效果。

colormap(axisHandle,..)colormap(figurehandle, ...)明确标识正在设置颜色表的图。请注意,colormap(axisHandle,..)语法仍然会设置图形的颜色表,它只是使用axisHandle的父属性来确定正在设置哪个图形。