# Saving all outputs of for for-loop

4 views (last 30 days)
Andre Metzger on 19 Sep 2019
Commented: Ankit on 20 Sep 2019
I have this code saved in an .m file
function yout=euler1(t0,y0,tfinal,h,f)
y=y0;
for n=t0:0.01:tfinal-h;
y=y+(h.*f(n,y));
end
yout=y
end
and need to save all of the outputs in order to be able to graph it.
How could i modify it in order to save all the outputs at each step/loop to be able to graph it.

#### 1 Comment

Ankit on 20 Sep 2019
Hello Andre,

James Tursa on 19 Sep 2019
Edited: James Tursa on 19 Sep 2019
Basic steps for you to take would be:
• Create your range up front, and not as part of the loop indexing. E.g., a t vector
• Use that range to determine the output variable size, e.g. numel(t)
• Preallocate the output variable to the size just determined. E.g., y = zeros(something,numel(t))
• Set the first y value to your initial value. E.g., y(:,1) = y0;
• Loop on an integer index, e.g. k, that will cover the number of t values
• Use that index within the loop to calculate your updated values.
For that last step, you would end up with something like this:
for k=1:something
y(:,k+1) = y(:,k) + h * f(t(k),y(:,k));
end
I have used y(:,k) instead of just y(k) to allow for functions that deal with column vectors instead of just scalars.
I have left several details for you to work on. Give it a try and come back to us for more help when you need it.
When you are done, y will contain all of the intermediate values.