Matlab 排序和索引矩阵
我有一个变量data,它是1xn double(n>15),类似这样:Matlab 排序和索引矩阵,matlab,sorting,indexing,Matlab,Sorting,Indexing,我有一个变量data,它是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双精度,类似于: 8 9 15 42 32 56 3 4 25 36 7 89 21 3 5 1 25 75 79 20 66... 例如,数据(1,1)的坐标
50.12 55.93 58.78 67.36 67.90 100.12 2.35 168.73 ...
首先,我想只保留数据中的前15个最高值,而删除其余值。这很容易做到。然而,复杂的是,数据中的每个值都与坐标中的一组x y z坐标相关联coord是一种3xn双精度,类似于:
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)。这里的挑战是,我还想删除坐标中与数据中删除的值相关联的相应坐标。这样,我将得到1x15数据和1x15协作。我考虑过这样做:
M=vertcat(data,coord) ;
然后按第一行对M进行排序,只保留第一行中最高的15个值,以4x15结束。最后,我将数据和坐标分开
我的问题是:
1.如何根据第一行对M进行排序,使第二行、第三行和第四行也相应地重新组织?
2.我提出的解决方案似乎很混乱。有人有优雅的解决方案吗?
sort
将告诉您排序数组的每个元素来自何处,您可以使用它来重新组织coord
[dataSorted,I] = sort(data,2,'descend')
dataTop15=dataSorted(1:15)
coordTop15=coord(:,I(1:15))
将您需要的所有信息放在一个数据结构中会更简单吗?协调相关阵列/矩阵是一件痛苦的事情。