Borrar filtros
Borrar filtros

cumulative sum of an array

4 visualizaciones (últimos 30 días)
Lanceric Tse
Lanceric Tse el 13 de Ag. de 2018
Comentada: James Tursa el 13 de Ag. de 2018
Hi, so I have an array,b, I need to find the cumulative sums for every 5 values.
To calculate the cumulative sum S of an array a with 5 values
b=[1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0];
a=[1 2 3 4 5];
amean=mean2(a);
S=zeros([1 length(a)]);
S(1)=a(1)-amean
for i=2:5
S(i)=S(i-1)+(a(i)-amean)
end
S=-2 -3 -3 -2 0
The result for b should look like S = -2 -3 -3 -2 0 0 1 3 6 0 -2 -3 -3 -2 0 0 1 3 6 0
  2 comentarios
James Tursa
James Tursa el 13 de Ag. de 2018
What is your question? For the given b, what would be your desired output?
Lanceric Tse
Lanceric Tse el 13 de Ag. de 2018
Editada: Lanceric Tse el 13 de Ag. de 2018
The desired output with be an array S, which contains the cumulative sums of every 5 values.
The code under the %% is how I would get the cumulative sum of an array of 5 values

Iniciar sesión para comentar.

Respuesta aceptada

Matt J
Matt J el 13 de Ag. de 2018
Editada: Matt J el 13 de Ag. de 2018
br=reshape(b,5,[]);
S=reshape( cumsum(br-mean(br)) ,1,[])
  1 comentario
James Tursa
James Tursa el 13 de Ag. de 2018
And, for older versions of MATLAB
S = reshape( cumsum(bsxfun(@minus,br,mean(br))) ,1,[])

Iniciar sesión para comentar.

Más respuestas (1)

dpb
dpb el 13 de Ag. de 2018
Editada: dpb el 13 de Ag. de 2018
>> N
N =
5
>> S=sum(reshape(b,[],length(b)/N))
S =
15 30 15 30
>>
>> S=cumsum(reshape(b,[],length(b)/N))
S =
1 6 1 6
3 13 3 13
6 21 6 21
10 30 10 30
15 30 15 30
>>
  2 comentarios
Lanceric Tse
Lanceric Tse el 13 de Ag. de 2018
I'm looking for the cumulative sum, not sum
dpb
dpb el 13 de Ag. de 2018
Sorry, typo...the fix should be obvious... :)

Iniciar sesión para comentar.

Categorías

Más información sobre Logical en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by