删除切片中的小值

时间:2013-11-01 03:19:09

标签: matlab 3d plot

如何删除切片图中的小值? 在我的情节中,基本上有太多的蓝色,我看不到里面的红点。enter image description here

或者,略有不同:

*是否可以使用matlab删除切片图中的某些点?

切片(X,Y,Z,V,sx,sy,sz)表示由sx,sy和sz定义的整个计划上的体积V的值。但我可以选择仅保留这些计划的一些要点吗?

  • 我们是否必须在整个计划中代表V的值?

  • 我可以将“小值”透明吗?

修改 新代码:

h =slice(x,y,z,V,sx,sy,sz);
for n=1:length(h)
    set(h(n), 'alphadata',get(h(n),'cdata'), 'facealpha','flat');   
end
a = alphamap('rampup',256);
a(a<(threshold)) = 0;
a(a>(threshold)) = 0.07;
alphamap(a);

我尝试了上面的代码。然而,这是我得到的情节: 我认为cdata(颜色)存在问题,但我无法弄清楚这是什么......

enter image description here

1 个答案:

答案 0 :(得分:4)

您可以调整透明度,以使较低的值更透明。首先,您需要切片的句柄:

h = slice(X,Y,Z,V,sx,sy,sz);

h不是单个句柄,而是一系列不同切片的句柄。对于任何一个句柄,您可以更改透明度(或循环所有n以更改它们):

set(h(n),'alphadata',get(h(n),'cdata'),'facealpha','flat');

alphadata是透明度的数据 - 默认情况下,这是“1”(不透明),因此对于每个句柄,您可以将其设置为cdata的内容。默认情况下,AlphaDataMapping应该已设置为scaled - 因此alphadata中的值会映射到alphamap,就像cdata值映射到您的色彩映射一样(更多内容)更高版本)。

facealpha是alphadata如何应用于对象面的设置 - 需要进行更改,以便实际使用alphadata中的值。

如果要调整透明值或透明值,可以更改alphamap。默认地图只是线性的,可以由plot(get(gcf,'Alphamap'))看到,其中0 =不可见,1 =不透明。地图的长度可以变化,因此您可以自由调整它 - 例如,如果您对这些值不感兴趣,可以将下半部分完全归零:

a = alphamap('rampup',256);
a(1:80)=0;
alphamap(a); % only changes alphamap of current figure

详细了解Matlab here中的透明度。