【问题标题】:Sort and index matrix排序和索引矩阵
【发布时间】:2015-05-01 04:52:22
【问题描述】:

我有一个变量 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 坐标相关联。 coord3xn 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、3、4行也相应地重新组织? 2. 我提出的解决方案似乎很混乱。有没有人有一个优雅的解决方案?

【问题讨论】:

  • 将您需要的所有信息放入一个数据结构中会更简单吗?协调相关的数组/矩阵很痛苦。

标签: matlab sorting indexing


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 2021-08-06
    • 2017-08-11
    • 2017-05-24
    • 2018-04-29
    • 2013-11-18
    • 2021-04-03
    相关资源
    最近更新 更多