【问题标题】:Matlab: How to find maximum occurrence in an array if there are more than 1 of the same maximum occurrenceMatlab:如果有多个相同的最大出现次数,如何在数组中找到最大出现次数
【发布时间】:2014-03-09 11:50:53
【问题描述】:

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

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

例如,我的等式是……

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

my q 将显示 1 而不是 1 和 2。

我知道我可以计算单个唯一值的计数并比较它们的出现次数。但是有没有更简单的方法可以做到这一点,因为我的数组可以很大。谢谢你。

【问题讨论】:

    标签: matlab frequency


    【解决方案1】:

    mode 有一个可选的输出参数,可以满足您的需求

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

    p 现在将包含 1 和 2

    【讨论】:

    • 开始爱上matlab。谢谢!
    【解决方案2】:

    对于大型数组,这可能比使用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.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多