排序和索引矩阵

Sort and index matrix

我有一个变量 data,它是一个 1xn double (n>15),像这样:

50.12 55.93 58.78 67.36 67.90 100.12 2.35 168.73 ... 

首先,我想只保留 data 中的前 15 个最高值,同时删除其余值。这很容易做到。然而,复杂的是 data 中的每个值都与 coord 中的一组 x y z 坐标相关联。 coord 是一个 3xn double,像这样:

8 9 15 42 32 56 3
4 25 36 7 89 21 3
5 1 25 75 79 20 66...

例如data(1,1)的坐标为coord(:,1),data(1,6)的坐标为coord(:,6)。这里的挑战是我还想删除 coord 中与 data 中删除的值相关联的相应坐标。这样,我最终会得到 1x15 数据1x15 坐标。我考虑过这样做:

M=vertcat(data,coord) ;

然后 按第一行对 M 排序,只保留第一行的最高 15 个值,以 4x15 结尾。最后,我拆分 datacoord.

我的问题是: 1.如何根据第一行对M进行排序,使第二、三、四行也相应地重新组织? 2. 我提出的解决方案看起来很乱。有人有优雅的解决方案吗?

sort 会告诉你排序数组的每个元素来自哪里,你可以用它来重新组织 coord

的列
[dataSorted,I] = sort(data,2,'descend')
dataTop15=dataSorted(1:15)
coordTop15=coord(:,I(1:15))