Creating new vector wich adds previous value with for loop

2 visualizaciones (últimos 30 días)
Johan  Lilliestråle
Johan Lilliestråle el 19 de Feb. de 2015
Comentada: Johan Lilliestråle el 19 de Feb. de 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

Respuestas (2)

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

Iniciar sesión para comentar.


Star Strider
Star Strider el 19 de Feb. de 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.

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by