Repeating while loop to form matrix

14 vues (au cours des 30 derniers jours)
Jo
Jo le 4 Juin 2021
Commenté : Bob Thompson le 4 Juin 2021
I am simulating a random walk, I have a while loop that creates an array of the distance the particle is from the starting point for each iteration. I would like to then take this while loop and repeat it to simulate multiple particles at once, and then create a matrix that combined all the previous arrays. I am trying to repeat the while loop with a for loop. RIght now it only gives me back the matrix but with one row (when in this example it should have 3) and when I get multiple rows its all of the same array. ANy help would be appreciated
i = 10; %iteration time step
t = 0; %current time
p = 0; % current position
d = 0; %distance from orgin
A = zeros(1,i);%array of distances
B = [1:i];
p = 3 %number of particles
multiple_distance=[] %matrix of distances
for ii = 3
while t < i
r=rand;
if r<0.5
l=1;
else
l=-1;
end
x = x + l;
d = abs(0-x);
t = t+1;
A(t)=x;
end
A
multiple_distance = [multiple_distance ; A]
end

Réponses (1)

Bob Thompson
Bob Thompson le 4 Juin 2021
Modifié(e) : Bob Thompson le 4 Juin 2021
You've only indexed one value (ii = 3 means it will only ever be 3), which is why you're only getting one line completed.
for ii = 1:3 % Loops through all values from 1 to 3
while t < i
r=rand;
if r<0.5
l=1;
else
l=-1;
end
x = x + l;
d = abs(0-x);
t = t+1;
A(t)=x;
end
A
multiple_distance = [multiple_distance ; A]
end
I'm pretty sure this can be done without loops at all, but I'm going to have to spend a bit more time figuring out what the code is doing before I can give you an answer on that.
  4 commentaires
Jo
Jo le 4 Juin 2021
thank you so much when i reset all the variables after the while loop it works, and for your code is there a way to do it so its not the cumulative but just the regular values in the matrix?
Bob Thompson
Bob Thompson le 4 Juin 2021
I'm not sure I understand what you mean by 'regular' vs 'cumulative.' I gave cumulative values because you were previously tracking x, which was the cumulative of each step. If you just want to get the +/- for each step the A already has those.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by