Plot the same function several times in one go (Random walk)?
2 次查看(过去 30 天)
显示 更早的评论
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
0 个评论
采纳的回答
Rik
2017-10-11
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 个评论
Rik
2017-10-11
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.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!