summing up array element

3 次查看(过去 30 天)
Bathrinath
Bathrinath 2013-7-25
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

回答(4 个)

Cedric
Cedric 2013-7-25
编辑:Cedric 2013-7-25
Hi, use CUMSUM:
>> p_csum = cumsum(p)
p_csum =
3 9 11 16
  2 个评论
Bathrinath
Bathrinath 2013-7-25
Thanks it works. Can you give the solution in for loop .
Cedric
Cedric 2013-7-25
编辑:Cedric 2013-7-25
Did you try building a solution based on a FOR loop? What did you implement so far?

请先登录,再进行评论。


Evan
Evan 2013-7-25
编辑:Evan 2013-7-25
help cumsum
>> s = cumsum(p)
s =
3 9 11 16
  1 个评论
Bathrinath
Bathrinath 2013-7-25
Thanks it works. Can you give the solution in for loop .

请先登录,再进行评论。


Andrew Reibold
Andrew Reibold 2013-7-25
编辑:Andrew Reibold 2013-7-25
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 2013-7-25
编辑:Iain 2013-7-25
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 个评论
Jan
Jan 2013-7-25
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.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Matrices and Arrays 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by