我是Matlab的新手,正在寻找简化以下“问题”的方法。
我想在数组中找到出现次数最多的值。但有时,我的数组可能包含多个共享相同最大出现次数的值。
例如,我的等式是......
Array = [ 1 1 2 2 3];
p = mode(Array);
我的q将显示1而不是1和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.