1

我有一个 100x100x100 的 3d 矩阵。该矩阵的每个点都分配了一个与特定信号强度相对应的值。如果我绘制所有点,则结果是难以理解的,并且需要马力来计算,因为要绘制大量的点。下一张图片举例说明了这个问题(在这种情况下,矩阵为 50x50x50 以减少计算时间):

在此处输入图像描述

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

我只想绘制最高值(例如,前 10 个)。我该怎么做?

我想到的一个简单的解决方案是将“nan”分配给高于阈值的值。即使结果很好,我认为它必须是修复它的最优雅的解决方案。 在此处输入图像描述

4

1 回答 1

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.

于 2014-05-14T10:58:04.420 回答