将矩阵的相同行组合在一起,以及它们的频率计数

时间:2016-05-08 09:33:59

标签: matlab multidimensional-array count frequency

解释问题的最简单方法是举个例子:

>> A = [1 5; 1 5; 1 6; 1 6; 1 6; 1 6; 1 7; 2 5; 2 6; 2 6; 2 6; 2 7; 2 7; 2 8]

A =

 1     5
 1     5
 1     6
 1     6
 1     6
 1     6
 1     7
 2     5
 2     6
 2     6
 2     6
 2     7
 2     7
 2     8

我希望输出的内容类似于

result =

     1     6     4
     1     5     2
     2     6     3
     2     7     2

这意味着第一列中每个值的前两个频繁对。因此,最频繁的配对有1个是6和5,最常见的配对有2个是6和7.第3列显示对的频率。

我在linux中使用matlab 2016。

1 个答案:

答案 0 :(得分:3)

您可以使用uniquehistc来计算每行的出现频率。然后使用频率,您可以继续进行计算。

[unique_rows,~,ind] = unique(A,'rows');
counts = histc(ind,unique(ind));

现在,您可以合并频率计数并对其进行排序。

arr = [unique_rows,counts];
[sorted,~]=sortrows(arr,[1 -3])

sorted =

 1     6     4
 1     5     2
 1     7     1
 2     6     3
 2     7     2
 2     5     1
 2     8     1
相关问题