绘制3D矩阵中非零元素的3D位置

时间:2017-06-19 16:50:24

标签: matlab

我有一个大小为M的矩阵981 x 567 x 1154

M是一个零的矩阵,在特定的X,Y,Z位置有122 1个。

如何在3D中绘制此图以在matlab中查看这些1的分布?

注意:如果我使用scatter3()plot3()函数,我必须提供3个参数 - X,Y和Z向量。我基本上对如何将M矩阵转换为这3个输入感兴趣,因此我可以将它们传递给函数。

1 个答案:

答案 0 :(得分:1)

您可以使用find获取非零元素的线性索引,并使用ind2sub将其转换为3D索引,如下所示:

[I] = find(M);
[X, Y, Z] = ind2sub(size(M),I);

现在您可以使用scatter3绘制3D点,如下所示:

scatter3(X, Y, Z)

对于定义为:

的小示例矩阵M,这将给出以下结果
M = zeros(5,5,5);
M(2,1,1) = 1;
M(1,4,5) = 1;
M(2,2,2) = 1;
M(3,2,2) = 1;

enter image description here