从1维矩阵:
list_A = [1,2,4,6,7,7,7,9,10,11,11,11,13,13,13]
如何获得出现次数最多的数字列表(在本例中为occurrence = 3)
我想要的答案应该是这样的(如果我们使用list_A):
Ans = [7,11,13]
答案 0 :(得分:4)
使用hist
:
我假设您的向量A
已排序。
A = [1,2,4,6,7,7,7,9,10,11,11,11,13,13,13];
occ = 3;
out = A( hist(A,A) == occ )
给出:
out =
7 11 13
如果A
未排序,您可以对其进行排序,或者:
A = [7,7,7,1,2,4,6,9,10,11,11,11,13,13,13]
occ = 3;
out = find( histc(A,1:max(A)) == occ )
如果还有负数:
A = [7,7,7,-4,6,-9,10,-11,-11,-11,13,13,13,-20]
occ = 3;
out = find( histc(A,min(A):max(A)) == occ ) + min(A)-1
或简单版本也在运作:
A = sort(A);
out = A( hist(A,A) == occ )
>> out = -11 7 13
另一种方便的方法是使用统计工具箱的tabulate
功能,甚至可用于小数值!
A = [7.5,7.5,7.5,-4,6,-9,10,-11,-11,-11,13,13,13,-20]
occ = 3;
T = tabulate(A);
out = T(T(:,2) == occ ,1)
>> out =
-11.0000
7.5000
13.0000
答案 1 :(得分:3)
您可以使用mode
轻松完成。要获取所有值,您应该使用第三个输出,它将是一个单元格数组:
[~, ~, result] = mode(list_A);
result = result{1}.';
修改
如果你的矢量已经排序并想要利用它(mode
显然没有),你可以使用diff
,find
和{{}进行手动操作{1}}:
max