Multiple 3d random walks

24 ビュー (過去 30 日間)
lena kappa
lena kappa 2022 年 12 月 8 日
コメント済み: lena kappa 2022 年 12 月 8 日
Hi everyone I have the next code that creates a 3d random walk but i would like to have in the 3d space some random points(seeds) and start from each one of them a random walk at the same time. Can anyone help me?? My code for the random walk is the following:
lamda = 3; %Mean free path
numberOfSteps = 100000; % Totlal number of steps
x(1) = rand; % Initial position (x)
y(1) = rand; % Initial position (y)
z(1) = rand; % Initial position (z)
for i = 1:numberOfSteps
r = -lamda*log(rand()); % Distance Travelled
theta = pi*rand(); % Arbritary angle in between 0 and Pi
phi = 2*pi*rand(); % Arbritary angle in between 0 and 2Pi
dx = r*sin(theta)*cos(phi); % Step Size (x)
dy = r*sin(theta)*sin(phi); % Step Size (y)
dz = r*cos(theta); % Step Size (z)
x(i+1) = x(i) + dx; % Position at the end of the first step (x)
y(i+1) = y(i) + dy; % Position at the end of the second step (y)
z(i+1) = z(i) + dz; % Position at the end of the third step (z)
end
plot3(x, y, z, 'k');

採用された回答

Torsten
Torsten 2022 年 12 月 8 日
編集済み: Torsten 2022 年 12 月 8 日
lambda = 3; %Mean free path
numberOfSteps = 10000; % Total number of steps
numberOfPaths = 3; % Number of paths
x(1,:) = rand(1,numberOfPaths); % Initial position (x)
y(1,:) = rand(1,numberOfPaths); % Initial position (y)
z(1,:) = rand(1,numberOfPaths); % Initial position (z)
for j = 1:numberOfPaths
for i = 1:numberOfSteps
r = -lambda*log(rand()); % Distance Travelled
theta = pi*rand(); % Arbritary angle in between 0 and Pi
phi = 2*pi*rand(); % Arbritary angle in between 0 and 2Pi
dx = r*sin(theta)*cos(phi); % Step Size (x)
dy = r*sin(theta)*sin(phi); % Step Size (y)
dz = r*cos(theta); % Step Size (z)
x(i+1,j) = x(i,j) + dx; % Position at the end of the first step (x)
y(i+1,j) = y(i,j) + dy; % Position at the end of the second step (y)
z(i+1,j) = z(i,j) + dz; % Position at the end of the third step (z)
end
end
plot3(x(:,1), y(:,1), z(:,1), 'k');
hold on
plot3(x(:,2), y(:,2), z(:,2), 'r');
plot3(x(:,3), y(:,3), z(:,3), 'g');
hold off
  3 件のコメント
Torsten
Torsten 2022 年 12 月 8 日
Sorry, I don't know.
Maybe you should open a separate question for this.
lena kappa
lena kappa 2022 年 12 月 8 日
It's ok thank you very much ☺!

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeCorrelation and Convolution についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by