我在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 呢?
感谢您的时间。
好的,从这里可以清楚地看出,在 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
您可以轻松确定
找到与某个值的最小距离的位置可以像这样简单:
w = [200 200 200 400 900];
cw = cumsum(w);
[v, loc] = min(abs(cw-600))
请注意,您会对loc+12
这种情况感兴趣,因为在此示例中w
仅包含元素 13 及更多元素。