我们说我有一个 Nx3 矩阵 M 。
例如,考虑一个函数 Map(v),它接收 1x3数组作为输入并返回 double 。
如何对 M 的行进行排序,以便具有最小地图的行应该首先出现?
也就是说, i 行应该是所有Map(M(i,:)) ≤ Map(M(j,:))
和1 ≤ j ≤ N
的{{1}}行的第一行?
示例:
j ≠ i
所以排序应该像这样离开M:
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
}
答案 0 :(得分:0)
% initialize an N-by-3 matrix where N=10...
M = [
1 0 3;
4 2 2;
0 1 0;
7 5 6;
3 3 8;
2 1 4;
0 0 6;
3 1 2;
5 0 0;
1 6 2
];
% sum its rows...
M_sum = sum(M,2);
% sort the vector of sums in ascending order...
[~,idx] = sort(M_sum);
% reorder the matrix rows based on the sorting result...
M = M(idx,:);