Matlab:如果有多个相同的最大出现次数,如何在数组中找到最大值

时间:2014-03-08 11:57:10

标签: matlab frequency

我是Matlab的新手,正在寻找简化以下“问题”的方法。

我想在数组中找到出现次数最多的值。但有时,我的数组可能包含多个共享相同最大出现次数的值。

例如,我的等式是......

Array = [ 1 1 2 2 3];
p = mode(Array);

我的q将显示1而不是1和2。

我知道我可以计算个别唯一值的数量并比较它们的出现次数。但有没有更简单的方法来做到这一点,因为我的阵列可以变得非常大。谢谢。

2 个答案:

答案 0 :(得分:1)

模式中有一个可选的输出参数可以执行您想要的操作

[ignore1, ignore2, p] = mode(Array);
p = p{1}; % convert from cell array to vector

p现在将包含1和2

答案 1 :(得分:0)

对于大型数组,这可能比使用mode快一点:

x = unique(Array);
count = histc(Array,x);
q = x(count==max(count));

<强>基准

Array = randi(10,1,1e7);

tic
[~, ~, p] = mode(Array);
p = p{1};
toc

tic
x = unique(Array);
count = histc(Array,x);
q = x(count==max(count));
toc

结果:

Elapsed time is 1.206425 seconds.
Elapsed time is 1.075395 seconds.