# summing up array element

1 view (last 30 days)
Bathrinath on 25 Jul 2013
Edited: per isakson on 11 Sep 2021
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
##### 1 CommentShowHide None
Jan on 25 Jul 2013
Is this a homework question?

Cedric Wannaz on 25 Jul 2013
Edited: Cedric Wannaz on 25 Jul 2013
Hi, use CUMSUM:
>> p_csum = cumsum(p)
p_csum =
3 9 11 16
##### 2 CommentsShowHide 1 older comment
Cedric Wannaz on 25 Jul 2013
Edited: Cedric Wannaz on 25 Jul 2013
Did you try building a solution based on a FOR loop? What did you implement so far?

Evan on 25 Jul 2013
Edited: Evan on 25 Jul 2013
help cumsum
>> s = cumsum(p)
s =
3 9 11 16
##### 1 CommentShowHide None
Bathrinath on 25 Jul 2013
Thanks it works. Can you give the solution in for loop .

Andrew Reibold on 25 Jul 2013
Edited: Andrew Reibold on 25 Jul 2013
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
##### 1 CommentShowHide None
Bathrinath on 25 Jul 2013
Thanks it works

Iain on 25 Jul 2013
Edited: Iain on 25 Jul 2013
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 CommentShowHide None
Jan on 25 Jul 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.