【发布时间】:2021-11-08 16:38:09
【问题描述】:
为了根据除第一列之外的所有列对矩阵进行排序,我使用了以下代码。我不希望 sortrows 考虑第一列,因为那是为了跟踪行号。
B = [1 1 0 0 0 0 0 0 0 1
2 0 1 0 0 0 0 1 0 0
3 0 0 1 0 1 0 0 1 0
4 0 1 0 0 0 1 1 0 0
5 0 0 1 0 0 0 0 1 0
6 0 0 0 0 0 1 1 0 0
7 1 0 0 1 0 0 0 0 0
8 0 0 1 0 1 0 0 0 0];
D = -sortrows(-B,[2:size(B,2)])
如果要根据除第一行之外的所有行对矩阵进行排序,那么在按降序排序时会忽略每列的第一个元素怎么办?有没有类似sortrows的功能?
为了澄清,所需的输出是
1 0 0 0 0 0 0 1 0 1
2 1 1 0 0 0 0 0 0 0
3 0 0 1 1 1 0 0 0 0
4 1 1 0 0 0 1 0 0 0
5 0 0 1 1 0 0 0 0 0
6 1 0 0 0 0 1 0 0 0
7 0 0 0 0 0 0 1 1 0
8 0 0 1 0 1 0 0 0 0
【问题讨论】:
-
转置,
sortrows,转置回来? -
@beaker 嗯...你看到了什么不匹配?
-
OP,如果您从示例输入中显示所需的输出将会很有帮助。
-
@beaker 我将问题文本理解为想要根据行对被视为原子的列进行排序(如
sortrows根据列对行进行排序)。但是,是的,需要澄清 -
与问题相切,但值得注意的是,您可以获取
sortrows的第二个输出,即[data,idx] = sortrows(data)来跟踪排序索引,而不是在其中添加额外的行/列你的矩阵。