基于函数对matlab矩阵行进行排序

时间:2017-12-13 20:58:17

标签: matlab sorting matrix

我们说我有一个 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
}

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,:);