基于任意列的条目以非递减顺序求矩阵中的行

时间:2013-06-28 06:58:01

标签: matlab

我正在使用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                                        

2 个答案:

答案 0 :(得分:2)

您正在寻找的是:

[u,~,n] = unique(A(:,1));
B = [u, accumarray(n, A(:,2), [], @max)];

答案 1 :(得分:1)

我并不完全理解您的问题描述,但听起来sortrows()可能对您有所帮助。