Creating new vector wich adds previous value with for loop
9 views (last 30 days)
Show older comments
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
0 Comments
Answers (2)
James Tursa
on 19 Feb 2015
Edited: James Tursa
on 19 Feb 2015
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
Star Strider
on 19 Feb 2015
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.
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!