Matlab 基于任意列的条目以非降序重排序矩阵中的行
我在Matlab中使用nx2矩阵,我尝试做的原则上相当简单。我随机生成一个方阵,通过一系列函数运行它,得到一个mx2矩阵。我对行使用unique函数来消除重复的行,最后得到一个nx2矩阵。我所遇到的困难是进一步缩小这个矩阵,以便对于第一列中具有完全相同的条目的所有条目,只保留第二列中数字最大的行 我使用循环检查第一列的第I个和(I+1)个条目,并将值最高的行存储在第二列中,但我尽量避免使用循环 如果有人有想法或建议,请让我知道 例如:Matlab 基于任意列的条目以非降序重排序矩阵中的行,matlab,Matlab,我在Matlab中使用nx2矩阵,我尝试做的原则上相当简单。我随机生成一个方阵,通过一系列函数运行它,得到一个mx2矩阵。我对行使用unique函数来消除重复的行,最后得到一个nx2矩阵。我所遇到的困难是进一步缩小这个矩阵,以便对于第一列中具有完全相同的条目的所有条目,只保留第二列中数字最大的行 我使用循环检查第一列的第I个和(I+1)个条目,并将值最高的行存储在第二列中,但我尽量避免使用循环 如果有人有想法或建议,请让我知道 例如: 0 0
0 0 0 0
0 1 0 1 0 3
A= 0 3 ---> unique(A, 'rows') = 0 3 --WANT--> 1 1
1 0 1 0 2 4
1 0 1 1
0 0 2 1
2 1 2 4
1 1
2 4
我不完全理解您对问题的描述,但听起来可能对您有所帮助。您需要的是:
[u,~,n] = unique(A(:,1));
B = [u, accumarray(n, A(:,2), [], @max)];
我想对行进行排序可以解决部分问题,但是使用unique(矩阵“rows”)也可以自动对行进行排序。希望通过这个例子,你能看到我想要实现的目标。