首页 > 解决方案 > 根据特定列对矩阵进行排序,并使用另一列对其进行进一步排序,同时保持第一排序顺序

问题描述

我有一个矩阵 A,由 3 列组成。第一列是 x 坐标,第二列是 y 坐标,最后第三列是对应于该 x&y 坐标的值。A 最初按第一列排序。

A=[
-10    15    0.1
-10    9     0.2
-10    17    0.3
  1     0    0.4
  1    -1    0.5
  1    30    0.6
18      1    0.7
18      9    0.8
18    -17    0.9
]

如何进一步对 y 列进行排序,同时仍保持 x 列中的顺序?预期结果:

A=[
-10     9    0.2
-10    15    0.1
-10    17    0.3
  1    -1    0.5
  1     0    0.4
  1    30    0.6
18    -17    0.9
18      1    0.7
18      9    0.8
]

值 x 的长度(或块)不必是三行(或一致)矩阵,-10可以是 5 行,也18可以是 15。

提前致谢。

标签: matlab

解决方案


您可以为此使用sortrows。在这种情况下,您希望先A根据第一列排序,然后再根据第二列排序:

>> sortrows(A,[1,2])

ans =

  -10.0000    9.0000    0.2000
  -10.0000   15.0000    0.1000
  -10.0000   17.0000    0.3000
    1.0000   -1.0000    0.5000
    1.0000         0    0.4000
    1.0000   30.0000    0.6000
   18.0000  -17.0000    0.9000
   18.0000    1.0000    0.7000
   18.0000    9.0000    0.8000

推荐阅读