How do I store values from a for loop

1 view (last 30 days)
This is euler's method. I need to plot x0 against y0 without doing it inside the forloop, as it causes performance issues later on. I thought that maybe I could store all individual values of x0 and y0 from the forloop inside two separate vectors and then perform the plot, so that I don't need to plot for every iteration of the forloop. What should I write to store it in vectors? The next problem: This is a function file, so if I store the data in two vectors, how do I recall the data in order to perform a plot, when I am outside the function file?
function euler = eul(n,h)
y0 = 0;
x0 = 0;
%%dy is a separate function located somewhere else
for t = 1:n
x1 = x0 + h;
y1 = y0 + h * dy(y0);
euler = y1;
%%updating values x0 and y0 in preparation for next loop
x0 = x1;
y0 = y1;
%%This is my current abomination of an attempt to plot.
plot(x0,y0,'x')
hold on
end
end
  1 Comment
madhan ravi
madhan ravi on 31 Oct 2018
Upload all the necessary information instead of giving information but by bit , saves time!!

Sign in to comment.

Accepted Answer

Star Strider
Star Strider on 31 Oct 2018
‘What should I write to store it in vectors?’
I would create ‘x0v’ and ‘y0v’ (for example) to store them:
function [euler,x0v,y0v] = eul(n,h)
y0 = 0;
x0 = 0;
x0v = zeros(1,n); % Preallocate
y0v = zeros(1,n); % Preallocate
%%dy is a separate function located somewhere else
for t = 1:n
x1 = x0 + h;
y1 = y0 + h * dy(y0);
euler = y1;
%%updating values x0 and y0 in preparation for next loop
x0 = x1;
y0 = y1;
x0v(t) = x0;
y0v(t) = y0;
%%This is my current abomination of an attempt to plot.
plot(x0v, y0v, 'x')
hold on
end
end
‘... how do I recall the data in order to perform a plot ...’
Add them as outputs, as I did here. The rest of your code is unchanged.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!