我在Matlab中有一个三维矩阵,它对应于一个能量剂量传递矩阵。我正在努力想象和表示矩阵。目前,我正在执行以下操作(thanks to another post)。
diff = double(squeeze(diff));
h = slice(diff, [], [], 1:size(diff,3));
set(h, 'EdgeColor','none', 'FaceColor','interp')
alpha(.1)

这给了我一个很好的三维图形,但它仍然很难正确地看到它,我必须继续旋转图形,以便能够正确地可视化它。我还使用了:
isosurface(diff,'isovalue')但同样,我们很难看到任何东西。
我想知道是否有办法去除实际剂量表示周围的蓝色区域,因为蓝色区域对应于0值。也许摆脱这一切可以帮助我看到一个更清晰的画面。
发布于 2014-07-04 12:01:56
您可以将零设置为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替换零

发布于 2014-07-04 12:01:45
这样做的一种方法是使用NaN不想表示的值复制数据。例如,下面是来自other post的原始示例映像

现在,如果我们使用相同的图像数据集,将零替换为NaN,并使用相同的方法绘制:
D(D==0)=NaN;
h = slice(D, [], [], 1:size(D,3));
set(h, 'EdgeColor','none', 'FaceColor','interp')
alpha(.1)

https://stackoverflow.com/questions/24573653
复制相似问题