I have a for loop that makes one particle take 1000 random steps. How do i make this happen for 1000 particles?

1 回表示 (過去 30 日間)
I am working on a project where I need to make 1000 particles, starting at the origin, take 1000 random steps and plot said steps. I got the first part which is:
N=1000;
position = zeros(2,N+1);
for i = 2:N+1
step=2*rand(2,1)-1; %Creates a random step vector (x,y)
position(:,i)= position(:,i-1)+step; %adds step to last position
end;
plot(position(1,2:N+1),position(2,2:N+1)) %Plots steps of particles starting from origin
This all works but now i need to make it work for 1000 particles and i need to plot them all on top of each other on the same graph. Does anyone have any suggestions? Thanks for the help.

回答 (1 件)

Andrew Newell
Andrew Newell 2015 年 3 月 1 日
編集済み: Andrew Newell 2015 年 3 月 1 日
This is a 2D random walk, and it helps to use variable names that reflect this. It is more efficient to generate a lot of random numbers at once and then use cumsum to cumulatively add them:
nSteps = 1000;
nParticles = 1000;
x = cumsum(2*rand(nSteps,nParticles)-1);
y = cumsum(2*rand(nSteps,nParticles)-1);
plot(x,y)
  1 件のコメント
ane4kina
ane4kina 2019 年 4 月 5 日
What is you wanted them to start at the origin and only plot the final position of each particle?

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeMathematics についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by