Creating new vector wich adds previous value with for loop

8 vues (au cours des 30 derniers jours)
Johan  Lilliestråle
Johan Lilliestråle le 19 Fév 2015
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

Réponses (2)

James Tursa
James Tursa le 19 Fév 2015
Modifié(e) : James Tursa le 19 Fév 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 commentaire
Johan  Lilliestråle
Johan Lilliestråle le 19 Fév 2015
Thank you very much, sometimes it is hard to see the simplicity in things. Have a good day

Connectez-vous pour commenter.


Star Strider
Star Strider le 19 Fév 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.
  1 commentaire
Johan  Lilliestråle
Johan Lilliestråle le 19 Fév 2015
Oh great with an inbuilt function, easy and fast :)

Connectez-vous pour commenter.

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by