Matlab 3D剂量阵列可视化

时间:2014-07-04 11:51:27

标签: matlab matlab-figure

我在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)

enter image description here 这给了我一个很好的3D情节,但仍然很难正确看到它,我必须继续旋转图形才能正确显示它。我也用过:

isosurface(diff,'isovalue')

但同样很难看到任何东西。

我想知道是否有办法摆脱实际剂量表示周围的蓝色区域,因为蓝色区域对应0值。也许摆脱它可以帮助我看到更清晰的画面。

2 个答案:

答案 0 :(得分:6)

执行此操作的一种方法是使用您不希望由NaN表示的值复制数据。例如,以下是other post

中的原始示例图像

enter image description here

现在,如果我们采用相同的图像数据集,请将{0}替换为NaN并使用相同的方法绘制:

D(D==0)=NaN;
h = slice(D, [], [], 1:size(D,3));
set(h, 'EdgeColor','none', 'FaceColor','interp')
alpha(.1)

enter image description here

答案 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替换零 enter image description here
没有用nan替换零 enter image description here