2017-06-19 13 views
-1

私は行列のサイズが981 x 567 x 1154です。3Dマトリックス内の非ゼロ要素の3D位置をプロットする

Mは、特定のX、Y、Z位置に1221を有するゼロのマトリックスです。

これを3Dでプロットして、これらの1の分布をmatlabに表示するにはどうすればよいですか?

: - X、Y、およびZベクトルIがscatter3()またはplot3()機能を使用している場合は、私が3引数を提供する必要があります。私は本質的にはM行列をこれらの3つの入力に変換する方法に興味があるので、それらを関数に渡すことができます。

+0

データの意味は? ['scatter3'](https://nl.mathworks.com/help/matlab/ref/scatter3.html)を使用して、データポイントを3Dで視覚化することができます。 – m7913d

+0

'Z'は特定のX、Y、Z位置に' 122'1を持つゼロのマトリックスです。 – haxtar

+0

'scatter3()'や 'plot3()'関数を使うと、X、Y、Zの3つの引数を指定する必要があります。私は本質的に、 'M'マトリックスをこれらの3つの入力に変換する方法に興味があり、そのような関数にそれらを渡すことができます。 – haxtar

答えて

1

あなたは非ゼロ要素の線形インデックスを取得し、3Dに変換するfindを使用することができ、次のようにind2subでインデックス:

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

今、あなたは次のようにあなたの3D点をプロットするscatter3を使用することができます。

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