我有一个变量数据,这是 1xn double (n> 15),如下所示:
50.12 55.93 58.78 67.36 67.90 100.12 2.35 168.73 ...
首先,我想保留数据中的前15个最高值,同时删除其余值。这很容易做到。但是,复杂性是数据中的每个值都与坐标中的一组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...
例如,数据(1,1)的坐标将是坐标(:,1),数据坐标(1,6)将是坐标(:,6)。这里的挑战是我还想删除 coord 中与数据中删除的值相关联的相应坐标。这样,我最终会得到 1x15数据和 1x15 coord 。我想过这样做:
M=vertcat(data,coord) ;
然后按第一行排序M ,并且仅保留第一行的最高15个值,以4x15结束。最后,我将数据和 coord 分开。
我的问题是: 1.如何按照第一行对第二行,第三行和第四行进行相应重组的方式对M进行排序? 我提议的解决方案似乎很混乱。有没有人有一个优雅的解决方案?
答案 0 :(得分:0)
sort
将告诉您排序数组的每个元素来自哪里,您可以使用它来重新组织coord
[dataSorted,I] = sort(data,2,'descend')
dataTop15=dataSorted(1:15)
coordTop15=coord(:,I(1:15))