Compute cumulative sum of a column vector without for loop

조회 수: 3 (최근 30일)
For each index of a column vector , I want to compute the sum from index to index+spacing. spacing is an integer.
My aim is not to use for-loop but I didn't manage to find a way to avoid it:
A=(1:10)'; % column vector
spacing = 4; % scalar
solution = zeros(length(A)-spacing,1);
for index=1:length(A)-win % equals 6 in this example
solution(index)=sum(A(index:index+spacing));
end
solution =
15
20
25
30
35
40
Thanks for your help!
Aurélien

채택된 답변

the cyclist
the cyclist 2012년 3월 30일
The filter() command is one way:
tmp = filter(ones(1,spacing+1),1,A);
solution = tmp(spacing+1:end)

추가 답변 (1개)

C.J. Harris
C.J. Harris 2012년 3월 30일
A=(1:10)'; % column vector
spacing = 4; % scalar
solution = arrayfun(@(n) sum(A(n):A(n+spacing)), 1:length(A)-spacing)';

카테고리

Help CenterFile Exchange에서 Matched Filter and Ambiguity Function에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by