【问题标题】:matlab: average group size of the same numbersmatlab:相同数字的平均组大小
【发布时间】:2012-04-21 14:14:35
【问题描述】:

我有一个类似

的字符串
a = 011112220010111122221110101111222201111111100022221111101101011... 

我想找到一组 0、1​​ 和 2 的平均大小(在这个例子中,所有这些都大约是 3-4)。有什么简单的方法吗? 谢谢!

【问题讨论】:

    标签: string matlab search grouping


    【解决方案1】:

    创建一个函数:

    function avg = avg_group_size(s, g)
    assert(all(ischar(s)) && ischar(g) && numel(g) == 1, 'bad input');
    s = s(:); % column
    not_g = char(g + 1);
    s_prev = [not_g; s(1 : end - 1)];
    s_next = [s(2 : end); not_g];
    idx_first   = find(s_prev ~= g & s == g);
    idx_last    = find(s_next ~= g & s == g);
    avg = mean(idx_last - idx_first + 1);
    return
    

    然后调用它:

    avg_0 = avg_group_size(a, '0');
    

    ...

    但这不是很有效的方法。如果速度很重要,您需要在一个循环中计算所有平均值。

    【讨论】:

      【解决方案2】:

      我不知道matlab,但我可以写一个伪代码,你可以使用它。

      int zeros <- 0 
      int ones <- 0 
      ...
      for(i = 0 ; i < a.lenght(or size) ; i++)
         if(a[i] == 0)
           zeros++
         else if(a[i] == 1)
           ones++
      ...
      (or you can use switch case statement)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-01
        • 1970-01-01
        • 2014-12-25
        • 2017-10-27
        • 2012-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多