排序和索引矩阵
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 结尾。最后,我拆分 data 和 coord.
我的问题是:
1.如何根据第一行对M进行排序,使第二、三、四行也相应地重新组织?
2. 我提出的解决方案看起来很乱。有人有优雅的解决方案吗?
sort
会告诉你排序数组的每个元素来自哪里,你可以用它来重新组织 coord
的列
[dataSorted,I] = sort(data,2,'descend')
dataTop15=dataSorted(1:15)
coordTop15=coord(:,I(1:15))
我有一个变量 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 结尾。最后,我拆分 data 和 coord.
我的问题是: 1.如何根据第一行对M进行排序,使第二、三、四行也相应地重新组织? 2. 我提出的解决方案看起来很乱。有人有优雅的解决方案吗?
sort
会告诉你排序数组的每个元素来自哪里,你可以用它来重新组织 coord
[dataSorted,I] = sort(data,2,'descend')
dataTop15=dataSorted(1:15)
coordTop15=coord(:,I(1:15))