列排序行的Matlab等效项



为了根据除第一列之外的所有列对矩阵进行排序,我使用了以下代码。我不希望排序行考虑第一列,因为这是为了跟踪行号。

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)])

如果你想根据除第一行之外的所有行对矩阵进行排序,那么在按降序排序时,每列的第一个元素都会被忽略,该怎么办?有没有类似于排序行的功能?

为了澄清,所需的输出是

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

您可以通过完成此操作

  • 转换输入和输出
  • 保持第1列分离
  • 您可以使用负排序索引来避免您所做的使输入和输出为负的操作
A = [B(:,1) sortrows( B(:,2:end).', -(2:size(B,1)) ).'];
>> A 
A =
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

相关内容

  • 没有找到相关文章

最新更新