# Plot the same function several times in one go (Random walk)?

7 views (last 30 days)
Delshad Ayoubi on 11 Oct 2017
Commented: Rik on 11 Oct 2017
clear
clc
==================
N = 10; % number of steps.
M = 10;
x_t(1) = 0;
for n = 1:N
a = sign(randn);
x_t(n+1) = x_t(n) + a;
end
plot(x_t);
xlabel('t'), ylabel('x_t'), title('randomwalk');
Someone already helped me with this task but he rewrote the entire code as a means of vectorizing it, is there any way I could plot the same function several times while retaining the previous plot, without changing too much of my code? I'm not sure how to progress beyond this stage since it doesn't do anything when i implement
hold on

Rik on 11 Oct 2017
You should always include a link to the old question, so people can look there for context. Of course it is always best to use vectorized code. It is a bad idea to refuse that kind of speed increasing measures. But if you are adamant about not using that other solution, just wrap this code in a for loop if you want to repeat it.
clear variables
clc
==================
N = 10; % number of steps.
M = 10;
for m=1:M
x_t(1) = 0;
for n = 1:N
a = sign(randn);
x_t(n+1) = x_t(n) + a;
end
plot(x_t);hold on
end
xlabel('t'), ylabel('x_t'), title('randomwalk');
##### 2 CommentsShowHide 1 older comment
Rik on 11 Oct 2017
The plot function accepts matrix inputs (to plot multiple lines), and what you are essentially doing in the loop is calculating a cumulative sum of the output of randn. Because randn can also output a matrix, you can put those together.
So a vectorized solution would combine randn, sign, cumsum and plot. As far as I can see, you will not need any more functions (except xlabel, ylabel and title of course).
It is always best to try thing for yourself, so see if you can find the solution yourself now.