Matlab 绘制数据集的总和
Matlab plotting the sum of a dataset
对于我的代码,我有一个 375x223x91 数据集(称为 'data1'),我很难将其绘制成图形。我可以使用以下方法成功绘制单个切片:
figure
imagesc(data1(:,:,50))
axis image
impixelinfo
colormap(jet)
% top-down view of slice 50 (of the 91 slices) of 'data1'.
但是我想对 91 个切片中的每一个求和并绘制自上而下的视图。我试图写一个 'for loop' 并在 z 方向上对所有 91 个切片求和然后绘制它但我得到错误。您的帮助将不胜感激。谢谢。
(添加 3D 图像的额外指导也将不胜感激)
如果您想沿第三个维度对数据求和,您应该使用 sum
:
的维度输入
sdata = sum(data1, 3);
然后就可以正常显示了
imagesc(sdata);
就绘制 3D 图像而言,使用 pcolor
是一种方法。
p = pcolor(sdata);
set(p, 'EdgeColor', 'none');
这会将图像放置在 z = 0
。如果你想改变它的位置,你可以改变 ZData
。
zvalue = 10;
set(p, 'ZData', 0 * get(p, 'ZData') + zvalue);
另一种选择是使用 surf
对象,其中 FaceColor
设置为 texturemap
,CData
设置为您的图像数据。
s = surf(ones(2));
set(s, 'FaceColor', 'texturemap', 'CData', sdata);
您可以调整表面的 XData
、YData
和 ZData
以调整 3D 中的位置 space。
对于我的代码,我有一个 375x223x91 数据集(称为 'data1'),我很难将其绘制成图形。我可以使用以下方法成功绘制单个切片:
figure
imagesc(data1(:,:,50))
axis image
impixelinfo
colormap(jet)
% top-down view of slice 50 (of the 91 slices) of 'data1'.
但是我想对 91 个切片中的每一个求和并绘制自上而下的视图。我试图写一个 'for loop' 并在 z 方向上对所有 91 个切片求和然后绘制它但我得到错误。您的帮助将不胜感激。谢谢。
(添加 3D 图像的额外指导也将不胜感激)
如果您想沿第三个维度对数据求和,您应该使用 sum
:
sdata = sum(data1, 3);
然后就可以正常显示了
imagesc(sdata);
就绘制 3D 图像而言,使用 pcolor
是一种方法。
p = pcolor(sdata);
set(p, 'EdgeColor', 'none');
这会将图像放置在 z = 0
。如果你想改变它的位置,你可以改变 ZData
。
zvalue = 10;
set(p, 'ZData', 0 * get(p, 'ZData') + zvalue);
另一种选择是使用 surf
对象,其中 FaceColor
设置为 texturemap
,CData
设置为您的图像数据。
s = surf(ones(2));
set(s, 'FaceColor', 'texturemap', 'CData', sdata);
您可以调整表面的 XData
、YData
和 ZData
以调整 3D 中的位置 space。