1

100x100x100 の 3D マトリックスがあります。その行列の各ポイントには、特定の信号強度に対応する値が割り当てられています。すべてのポイントをプロットすると、描画されるポイントが大量にあるため、結果がわかりにくく、計算に馬力が必要になります。次の図は問題を示しています (この場合、行列は計算時間を短縮するために 50x50x50 でした)。

ここに画像の説明を入力

[x,y,z] = meshgrid(1:50,1:50,1:50);
scatter3(x(:),y(:),z(:),5,strength(:),'filled')

最も高い値 (上位 10 など) のみをプロットしたいと考えています。どうすればいいですか?

私の頭に浮かんだ簡単な解決策の 1 つは、しきい値よりも高い値に「nan」を割り当てることです。結果も素晴らしいので、修正するには最もエレガントなソリューションに違いないと思います。 ここに画像の説明を入力

4

1 に答える 1

1

それを nx1 ベクトルに変形します。そのベクトルを並べ替えて、最初の 10 個の値を取得します。

num_of_rows = size(M,1)
V = reshape(M,num_of_rows,1); 
sorted_V = sort(V,'descend');
ind = sorted_V(1:10)

M が 3D 行列であると想定しています。これにより、マトリックスの上位 10 の値とそれぞれのインデックスが得られます。ind2sub()を取得するために使用できますx,y,z

于 2014-05-14T10:58:04.420 に答える