【问题标题】:Matlab Cumulative sumMatlab 累计和
【发布时间】:2014-03-09 04:50:49
【问题描述】:

我正在使用 cumsum 函数在 matlab 中工作。现在我想知道数组的 cumsum 何时到达与数字最近的位置。例如;

cumsum(week1(1,13:17)) 什么时候会到达它最接近 800 的位置。

week 1 13:17 = 200 200 200 400 900
cumsum(week1(1,13:17))= 400 600 1000 1900 

那么我怎样才能找到它最近的位置是 15?

感谢您的宝贵时间。

【问题讨论】:

    标签: matlab cumsum


    【解决方案1】:

    好的,从这里可以清楚地看出,在 13 时为 400,在 14 时为 600,在 15 时为 1000,现在您可以在 matlab 程序中使用 if that if cumsum(array)>800,break;also请保存索引,然后您可以轻松找到它: 编辑:

    >> A=[200 200 200 400 900];
    >> sum=cumsum(A);
    >> i=1;
    while sum(i)<=800
      i=i+1;
       if sum(i)>800
       i=i-1;
    end
    end
    
    >> i
    
    i =
    
         3
    

    现在你有

    13:17
    
    ans =
    
        13    14    15    16    17
    

    你可以轻松判断

    【讨论】:

      【解决方案2】:

      找到与某个值的最小距离的位置可以这么简单:

      w = [200 200 200 400 900];
      cw = cumsum(w);
      
      [v, loc] = min(abs(cw-600))
      

      请注意,在这种情况下,您会对 loc+12 感兴趣,因为在此示例中,w 仅包含元素 13 及更多元素。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-20
        • 2021-01-13
        • 2018-04-09
        • 2018-03-02
        • 1970-01-01
        • 2015-07-20
        • 2021-11-10
        • 2014-05-04
        相关资源
        最近更新 更多