2014-05-14 28 views
1

我有一個100x100x100的3d矩陣。該矩陣的每個點都分配了一個對應於某個信號強度的值。如果我繪製所有點,結果是不可理解的,並且需要馬力來計算,因爲大量的繪製點。 下一張圖像examplify問題(在這種情況下,矩陣爲50x50x50用於減少計算時間):選擇繪製在散點圖上的值

enter image description here

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

我想只繪製最高值(例如,前10 )。我該怎麼做?

我想到的一個簡單的解決方案是將「nan」設置爲高於閾值的值。 即使結果不錯我認爲它必須是一個最優雅的解決方案來解決它。 enter image description here

+1

其實我喜歡在繪製數據時指定NaN值,我只是不想陰謀......我認爲這是一個不錯的方法! –

+0

@AnderBiguri可能是一個快速的解決方案,但即使nan值沒有被繪製,至少就我而言,我注意到表示如何慢(例如,在旋轉視圖時是指渲染),如if所有其他點都被繪了。 –

+0

mmm不知道,我的數據通常較小。其實所給出的答案也不是一個壞主意 –

回答

1

將其重塑爲nx1向量。對該向量進行排序並取前十個值。

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矩陣。這將爲您提供矩陣中的前十個值和相應的索引。您可以使用ind2sub()來獲得x,y,z