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일

2 개 추천

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일

1 개 추천

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일

1 개 추천

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일

0 개 추천

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.

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

태그

질문:

2013년 7월 25일

편집:

2021년 9월 11일

Community Treasure Hunt

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

Start Hunting!

Translated by