How do I properly append to an array within a loop?
1.239 views (last 30 days)
I am running a loop of 300 iterations. Within the loop, I have a logic statement as follows.
for i = 1:300
if arrival <1
Ai = Ai + ia_time(i);
arrival = ia_time(i-1);
Ai = ia_time(i) + arrival;
disp(Ai); % <-- displays all values
disp(Ai); % <-- only displays the final value from the loop
While the loop is open, 'disp(Ai)' prints the values correctly. However, if I attempt to use or print the variable after the final closing 'end', I only get the one final value of Ai. What I would like is an array of all values that I can reuse for future operations later in the code. I feel like it is not creating the array properly, and perhaps I need to assign the value of Ai to another variable as the loop iterates, but I can't seem to make that work either.
I know this should be simple, but I am beating my newbie head on the desk.
Guillaume on 16 Oct 2017
If all you're trying to do is accumulate the values of ia_time, then
A = cumsum(ia_time);
If you really wanted to use a loop for that:
A = zeros(size(ia_time));
A(1) = ia_time(1);
for i = 2:numel(ia_time) %never hardcode end values, ask for what it actually is
A(i) = A(i-1) + ia_time(i);
Cedric Wannaz on 16 Oct 2017
Edited: Cedric Wannaz on 16 Oct 2017
You shouldn't name your variable Ai if i is meant to be the index. Assuming that A is already defined and that, at loop index i, you want to alter its component at position/index i:
A(i) = A(i) + ia_time(i) ;
which is: add element i of vector ia_time to element i of A, and store the result back in A at position i.