我在Matlab中有一个3D矩阵,它对应于能量剂量传递矩阵。我试图想象和表示矩阵。目前我正在做以下事情(thanks to another post)。
diff = double(squeeze(diff));
h = slice(diff, [], [], 1:size(diff,3));
set(h, 'EdgeColor','none', 'FaceColor','interp')
alpha(.1)
这给了我一个很好的3D情节,但仍然很难正确看到它,我必须继续旋转图形才能正确显示它。我也用过:
isosurface(diff,'isovalue')
但同样很难看到任何东西。
我想知道是否有办法摆脱实际剂量表示周围的蓝色区域,因为蓝色区域对应0
值。也许摆脱它可以帮助我看到更清晰的画面。
答案 0 :(得分:6)
执行此操作的一种方法是使用您不希望由NaN表示的值复制数据。例如,以下是other post
中的原始示例图像
现在,如果我们采用相同的图像数据集,请将{0}替换为NaN
并使用相同的方法绘制:
D(D==0)=NaN;
h = slice(D, [], [], 1:size(D,3));
set(h, 'EdgeColor','none', 'FaceColor','interp')
alpha(.1)
答案 1 :(得分:6)
您可以将零设置为nan
,以便不会将其设置为
diff = double(squeeze(diff));
diff(diff==0)=nan; % added line
h = slice(diff, [], [], 1:size(diff,3));
set(h, 'EdgeColor','none', 'FaceColor','interp')
alpha(.1)
使用前一个问题的MRI数据
load mri
D = double(squeeze(D));
D(D==0)=nan;
h = slice(D, [], [], 1:size(D,3));
set(h, 'EdgeColor','none', 'FaceColor','interp')
alpha(.1)
用nan替换零
没有用nan替换零