summing up array element

Hello,
I am new to programming, I have an array like p = [3 6 2 5];
I need c = [3 9 11 16]; First element in the array is as it is, when it goes to next element it has to sum the previous element.
Regards, SBN

Respuestas (4)

Cedric
Cedric el 25 de Jul. de 2013
Editada: Cedric el 25 de Jul. de 2013

2 votos

Hi, use CUMSUM:
>> p_csum = cumsum(p)
p_csum =
3 9 11 16

2 comentarios

Bathrinath
Bathrinath el 25 de Jul. de 2013
Thanks it works. Can you give the solution in for loop .
Cedric
Cedric el 25 de Jul. de 2013
Editada: Cedric el 25 de Jul. de 2013
Did you try building a solution based on a FOR loop? What did you implement so far?

Iniciar sesión para comentar.

Evan
Evan el 25 de Jul. de 2013
Editada: Evan el 25 de Jul. de 2013

1 voto

help cumsum
>> s = cumsum(p)
s =
3 9 11 16

1 comentario

Bathrinath
Bathrinath el 25 de Jul. de 2013
Thanks it works. Can you give the solution in for loop .

Iniciar sesión para comentar.

Andrew Reibold
Andrew Reibold el 25 de Jul. de 2013
Editada: Andrew Reibold el 25 de Jul. de 2013

1 voto

Here is your solution in a really easy loop.
p = [3 6 2 5]; %Can have as many numbers as you want
for n = 2:length(p) %n can be whatever counter you want.
p(n) = p(n)+p(n-1); %semi-colon suppresses output
end
-Andrew
Iain
Iain el 25 de Jul. de 2013
Editada: Iain el 25 de Jul. de 2013

0 votos

for i = 1:numel(p)
c(i) = sum(p(1:i));
end
Or
so_far = 0;
for i = 1:numel(p)
so_far = so_far + p(i);
c(i) = so_far;
end
or
for i = 1:numel(p)
s = 0;
for j = 1:i
s = s+ p(j);
end
c(i) = s;
end

1 comentario

Jan
Jan el 25 de Jul. de 2013
These are inefficient solutions, because the complete sum is calculated in each iteration. While this might not matter for 4 elements, the runtime will grow rapidly for longer data.
It is more efficient to re-use the sum for the elements 1 to i, when the sum until the i+1.th element is obtained. See Andrews answer.

Iniciar sesión para comentar.

Categorías

Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 25 de Jul. de 2013

Editada:

el 11 de Sept. de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by