matlab - 仅根据一列对矩阵进行排序
问题描述
我有这个矩阵A,
A= [10 -12 4 8;
1 3 11 -2;
1 -9 8 0;
1 1 9 3].
如果我在 Matlab 中使用 sortrows 函数B = sortrows(A)
。我会得到这个。
B = [1 -9 8 0;
1 1 9 3;
1 3 11 -2;
10 -12 4 8].
我想要的答案是这样的。
B = [1 3 11 -2;
1 -9 8 0;
1 1 9 3;
10 -12 4 8]
问题是,我想在这里对我的行进行排序,但仅基于第 1 列。如果第 1 列中的值相同,则不要根据第 2 列对它们进行排序(通常该函数执行)。
如果有人可以帮助我,我真的很感激。
谢谢你。
解决方案
仅使用函数仅保留索引对第一列sort
进行排序,然后使用该索引对整个矩阵进行排序。
A= [10 -12 4 8;
1 3 11 -2;
1 -9 8 0;
1 1 9 3];
[~,ind] = sort(A(:,1))
B = A(ind,:)
或者简单地使用函数的第二个参数来sortrows
精确列排序向量:
B = sortrows(A,1)
推荐阅读
- python - Pygame:当我按住鼠标时屏幕闪烁,但只有一个特定的按钮
- c++ - 用于文本文件的 C++ getline
- python - 如何过滤所有带有 something1 后跟 xyz 的行并将它们存储在单独的 pandas 数据框中
- asp.net-web-api - 如何仅限制 WebApi 授权路由的子集?
- python - 如何在 TF2.0 中将 gradient_override_map 与 tf.GradientTape 一起使用
- c - 使用指针查找文件中的标签
- sql-server - 即使在设置了默认架构和默认数据库之后,也没有应用默认架构
- python-3.x - 如何使输出 ipywidget 仅捕获标准输出?
- c# - ASP.NET MVC - 尝试发布到控制器时 ViewModel 为空
- arrays - Mips Assembly 查找用户创建数组的最大值