【发布时间】:2017-12-13 20:58:16
【问题描述】:
假设我有一个 Nx3 矩阵 M。
例如,考虑一个函数 Map(v),它接收 1x3 数组 作为输入并返回一个 double。
如何对 M 的行进行排序,以使 Map 最小的行排在最前面?
也就是说,如果Map(M(i,:)) ≤ Map(M(j,:)) 对于所有1 ≤ j ≤ N 和j ≠ i,i 行应该是第一行?
示例:
M = |1 2 3|
|4 5 6|
|7 8 9|
Map(v){
if (v(1) == 1 && v(2) == 2 && v(3) == 3) return 2
if (v(1) == 4 && v(2) == 5 && v(3) == 6) return 3
if (v(1) == 7 && v(2) == 8 && v(3) == 9) return 1
}
所以排序应该像这样离开M:
M = |7 8 9|
|1 2 3|
|4 5 6|
【问题讨论】:
-
使用
[~,I]=sort(your_sum)获取I中的索引。M(I,:)是您想要的输出。检查sort -
@brainkz
[~,I]=sort(your_sum)是什么意思? -
@Daniel by
your_sum我的意思是Sum(a,b,c),一个用于排序的向量。 -
@brainkz 没用,我是 matlab 新手,我不知道您对
[~,I]的含义以及[~,I] = sort(Sum)将如何排序