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

2 visualizzazioni (ultimi 30 giorni)
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.

Risposte (1)

Andrew Newell
Andrew Newell il 1 Mar 2015
Modificato: Andrew Newell il 1 Mar 2015
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)

Categorie

Scopri di più su Mathematics in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by