2017-10-17 54 views
1

我有一个像下面的矩阵,如何计算MATLAB中独特行的出现次数?

A = 

    1  2  3 
    4  5  6 
    7  8  9 
    10 11 12 
    4  5  6 
    7  8  9 
    4  5  6 
    1  2  3 

我可以在这个矩阵使用命令A_unique = unique(A,'rows')提取的唯一行和结果如下

A_unique = 

    1  2  3 
    4  5  6 
    7  8  9 
    10 11 12 

我需要找到的次数各行存在于主要基质A 像下面

A_unique_count = 

    2 
    3 
    2 
    1 

一些事情,我怎样才能找到腠nt独特的行?谁能帮忙?由于提前

马努

回答

5

unique第三输出为您提供了独特的行的原始数组中的索引。您可以使用accumarray来计算出现次数。

例如:

A = [1  2  3 
    4  5  6 
    7  8  9 
    10 11 12 
    4  5  6 
    7  8  9 
    4  5  6 
    1  2  3]; 

[uniquerow, ~, rowidx] = unique(A, 'rows'); 
noccurrences = accumarray(rowidx, 1) 

返回:

noccurrences = 

    2 
    3 
    2 
    1 

正如预期的那样

2

我会建议@excaza's approach。但只适合品种:

A_unique_count = diff([0; find([any(diff(sortrows(A), [], 1), 2); 1])]);