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 日

1 投票

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 件のコメント

lena kappa
lena kappa 2022 年 12 月 8 日
Thank you @Torsten so much!!! If you could help me with one more thing please:
If I plot the 2D image with view(2) I get something like this :
but is there a way to get a grayscale like image in the sense that if one point has multiple points beneath it in the 3D space it get darker and darker while if it has fewer or no point below it in the 3D space it is brighter???
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 件)

カテゴリ

ヘルプ センター および File ExchangeParticle & Nuclear Physics についてさらに検索

質問済み:

2022 年 12 月 8 日

コメント済み:

2022 年 12 月 8 日

Community Treasure Hunt

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

Start Hunting!

Translated by