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值.也许摆脱它可以帮助我看到更清晰的画面.
您可以将零设置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替换零

一种方法是使用您不希望由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)
