1

我在matlab中使用cumsum函数。现在我想知道数组的 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 呢?

感谢您的时间。

4

2 回答 2

0

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

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

您可以轻松确定

于 2014-04-17T09:41:21.520 回答
0

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

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

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

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

于 2014-04-29T13:10:40.473 回答