Matlab 3D剂量阵列可视化

Man*_*ete 2 matlab matlab-figure

我在Matlab中有一个3D矩阵,它对应于能量剂量传递矩阵.我试图想象和表示矩阵.目前我正在做以下事情(感谢另一篇文章).

diff = double(squeeze(diff));
h = slice(diff, [], [], 1:size(diff,3));
set(h, 'EdgeColor','none', 'FaceColor','interp')
alpha(.1)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 这给了我一个很好的3D情节,但仍然很难正确看到它,我必须继续旋转图形才能正确显示它.我也用过:

isosurface(diff,'isovalue')
Run Code Online (Sandbox Code Playgroud)

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

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

RTL*_*RTL 7

您可以将零设置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)
Run Code Online (Sandbox Code Playgroud)

使用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)
Run Code Online (Sandbox Code Playgroud)

产量

用nan替换零 在此输入图像描述
没有用nan替换零 在此输入图像描述


nkj*_*kjt 6

一种方法是使用您不希望由NaN表示的值复制数据.例如,这是来自另一篇文章的原始示例图像

在此输入图像描述

现在,如果我们采用相同的图像数据集,请NaN使用相同的方法替换零和绘图:

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

在此输入图像描述

  • SNAP!甚至到了地块 (2认同)