Creating new vector wich adds previous value with for loop

7 visualizzazioni (ultimi 30 giorni)
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

Risposte (2)

James Tursa
James Tursa il 19 Feb 2015
Modificato: James Tursa il 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
  1 Commento
Johan  Lilliestråle
Johan Lilliestråle il 19 Feb 2015
Thank you very much, sometimes it is hard to see the simplicity in things. Have a good day

Accedi per commentare.


Star Strider
Star Strider il 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.

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by