Matlab累计和

时间:2014-03-09 04:50:49

标签: matlab cumsum

我正在使用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?

感谢您的时间。

2 个答案:

答案 0 :(得分:0)

从这一点可以清楚地看出,在13它是400,在14它是600,在15它是1000,现在你可以检查matlab程序使用if if if cumsum(array)> 800,break;请保存索引,你可以轻松找到它: 编辑:

>> 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

你可以轻松确定

答案 1 :(得分:0)

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

w = [200 200 200 400 900];
cw = cumsum(w);

[v, loc] = min(abs(cw-600))

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