matlab - 根据特定列对矩阵进行排序,并使用另一列对其进行进一步排序,同时保持第一排序顺序
问题描述
我有一个矩阵 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。
提前致谢。
解决方案
您可以为此使用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
推荐阅读
- javascript - 如何使用 React Js 创建多列下拉列表?
- r - 在 R 中绘制按时间排序的布尔值序列
- node.js - 我正在为节点/打字稿中的游戏创建一个纯 API。我的游戏逻辑在我的控制器中,哪里有更好的地方呢?
- php - Drupal 8 / Maestro 模块:如何将任务分配给主管?
- r - 使用链接时,R Shiny 书签 URL 不会渲染
- python - 如何使用 matplotlib 删除图形轴(y 轴)
- java - 无法专注于 FlexTable 中的 GWT 小部件
- c# - 缓存任务结果 - AsyncLazy 不包含 GetAwaiter 的定义
- c# - Assert.IsInstanceOfType 不接受 Type 作为参数
- c++ - 找不到“boost_atomic”提供的包配置文件