Creating new vector wich adds previous value with for loop

조회 수: 2 (최근 30일)
Johan  Lilliestråle
Johan Lilliestråle 2015년 2월 19일
댓글: Johan Lilliestråle 2015년 2월 19일
Hey everybody
Lets say that I have the vector:
a = [1, 1, ,1 ,1];
Then I want to create a new vector which adds all previous values, call it b
b = [1, 2, 3, 4];
the first value is the sum of the a(1,1), the second value is the sum of the previous value (which was 1) plus the new a(1,2) = 1. Then we get 1+1 =2. The third value is th1 sum of the previous value 2 and a(1,3) = 1 which is 1+2=3. And so on and on. If i want to do this in a for loop would that be:
a = [1, 1, ,1 ,1];
b = zeros(1,4)
for i=1:4;
b = 0;
b(i) = b + a(i);
end
I have tried that code but it doesnt work. If anyone a suggestion how to create an foor loop for this problem I would be grateful to see it. Cheers

답변 (2개)

James Tursa
James Tursa 2015년 2월 19일
편집: James Tursa 2015년 2월 19일
b = cumsum(a);
To fix your explicit loop, don't set b = 0 at each iteration, and use proper indexing into the vectors. E.g.,
a = [1, 1, 1, 1];
b = a;
for i=2:4;
b(i) = b(i-1) + a(i);
end
  댓글 수: 1
Johan  Lilliestråle
Johan Lilliestråle 2015년 2월 19일
Thank you very much, sometimes it is hard to see the simplicity in things. Have a good day

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


Star Strider
Star Strider 2015년 2월 19일
There’s an easier way to do it with the repmat and triu functions:
a_sum = sum(triu(repmat(a, 4, 1)));
This will give you exactly what you want.

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by