Summation in a for loop without cumulitive
古いコメントを表示
I have a very simple question.
I want to summate the variable A for a certain interval + and - B.
for i=(b+1):length((a)-b)
C(i) = sum(a(i-b):(i+b));
end
This loop works, however the output that I get is a cumulative sum of all the previous. So I get an exponential increase. However I would like to just have the sum over the interval -b:b for all values of i. So no cummulation.
採用された回答
その他の回答 (1 件)
Jos (10584)
2014 年 2 月 26 日
Another solution:
% hide the for-loop
% A is the array, B is a scalar
A = randperm(10)
B = 2
C1 = arrayfun(@(x) sum(A(x-B:x+B)), B+1:numel(A)-B)
% and yet another solution
cumA = cumsum(A)
C2 = cumA(2*B+1:end) - [0 cumA(1:end-2*B)]
カテゴリ
ヘルプ センター および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!