Compute cumulative sum of a column vector without for loop

4 vues (au cours des 30 derniers jours)
Aurelien Queffurust
Aurelien Queffurust le 30 Mar 2012
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

Réponse acceptée

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

Plus de réponses (1)

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

Catégories

En savoir plus sur Get Started with MATLAB dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by