Cumulative sum at over an specified interval

3 visualizaciones (últimos 30 días)
Karina Gutierrez
Karina Gutierrez el 24 de Feb. de 2017
Comentada: Beder el 3 de Mzo. de 2017
Hi, I have an input vector of data that I would like to process to have a cumulative sum that resets and starts every 7 data points. For instance consider I have the following:
A = 1,0,2,2,4,1,0,7,2,3,1,0,0,1
I want to create a cumulative sum for the first 7 points and then start over again for the next set of 7 points, then I have:
B = 1,1,3,5,9,10,10,7,9,12,13,13,13,14
Thanks in advance! Karina

Respuesta aceptada

Beder
Beder el 24 de Feb. de 2017
B=reshape(A,7,[]);
C=cumsum(B,1);
D=reshape(C,[],1);
Or:
B=reshape(cumsum(reshape(A,7,[]),1,[],1);
Be careful: This only works as long as the length of A is divisible by 7.
  2 comentarios
Karina Gutierrez
Karina Gutierrez el 27 de Feb. de 2017
That worked great! However, my datasets are variable in size and not all have a length that is divisible by 7. Is there a way to change the length of A to the nearest length divisible by 7? For example, if I have an array of length 15, I can make a code to omit the last point and reshape A to size 14?
Else I am going to have to go manually deleting data to make it the right length?
Thanks again for your help!
Beder
Beder el 3 de Mzo. de 2017
Try to use "B=reshape(A(1:end-mod(numel(A),7)),7,[]); This will shorten your A to a size divisible by 7.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

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

Community Treasure Hunt

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

Start Hunting!

Translated by