我正在使用Matlab中的nx2矩阵,而我正在尝试做的事情原则上相当简单。我随机生成一个方阵,我通过一系列函数运行它,我得到一个mx2矩阵。我使用行上的唯一函数来摆脱重复的行,最后得到一个nx2矩阵。我正在做的事情是进一步减少这个矩阵,以便对于第一列中具有完全相同条目的所有条目,仅保留第二列上具有最高编号的行。
我使用循环检查第一列的第i个和第(i + 1)个条目,并在第二列中存储具有最高值的行,但我尽量避免使用for循环
如果有人有任何想法或建议,请告诉我们!
示例:
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
答案 0 :(得分:2)
您正在寻找的是:
[u,~,n] = unique(A(:,1));
B = [u, accumarray(n, A(:,2), [], @max)];
答案 1 :(得分:1)
我并不完全理解您的问题描述,但听起来sortrows()
可能对您有所帮助。