解释问题的最简单方法是举个例子:
>> 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。
答案 0 :(得分:3)
您可以使用unique
和histc
来计算每行的出现频率。然后使用频率,您可以继续进行计算。
[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