フィルターのクリア

Simulating a 2D Random Walk

4 ビュー (過去 30 日間)
William
William 2023 年 12 月 6 日
コメント済み: Walter Roberson 2023 年 12 月 13 日
How can I turn a 1d random walk into a 2d random walk???
This is my code for 1d random walk:
N = 100; % Number of steps
single_trajectory = simulateRandomWalk(N);
figure
plot(0:N, single_trajectory, '-o')
title('1D Random Walk - Single Trajectory')
xlabel('Steps')
ylabel('Position')
P_values = [50, 500, 5000, 50000, 500000];
for p_index = 1:length(P_values)
P = P_values(p_index);
final_positions = zeros(1, P);
for i = 1:P
single_trajectory = simulateRandomWalk(N);
final_positions(i) = single_trajectory(end);
end
% Plot histogram of final positions
figure
histogram(final_positions, 'Normalization', 'probability')
title(['Histogram for P = ' num2str(P)])
xlabel('Final Position')
ylabel('Probability')
end
function trajectory = simulateRandomWalk(N)
% Initialize position
position = 0;
% Initialize trajectory array
trajectory = zeros(1, N+1);
trajectory(1) = position;
% Simulate random walk
for step = 1:N
% Generate a random number to decide left or right movement
move = randi([0, 1])*2 - 1; % -1 for left, 1 for right
% Update position
position = position + move;
% Store the current position in the trajectory array
trajectory(step+1) = position;
end
end

回答 (2 件)

Walter Roberson
Walter Roberson 2023 年 12 月 6 日
Call simulateRandomWalk twice, once to get an x trajectory and once to get a y trajectory. Then put them together,
plot(first_trajectory, second_trajectory)
  2 件のコメント
William
William 2023 年 12 月 11 日
How would I go about doing that?
Walter Roberson
Walter Roberson 2023 年 12 月 13 日
N = 100; % Number of steps
x_trajectory = simulateRandomWalk(N);
y_trajectory = simulateRandomWalk(N);
figure
plot(x_trajectory, y_trajectory, '-o')
title('1D Random Walk - Single Trajectory')
xlabel('Steps')
ylabel('Position')
function trajectory = simulateRandomWalk(N)
% Initialize position
position = 0;
% Initialize trajectory array
trajectory = zeros(1, N+1);
trajectory(1) = position;
% Simulate random walk
for step = 1:N
% Generate a random number to decide left or right movement
move = randi([0, 1])*2 - 1; % -1 for left, 1 for right
% Update position
position = position + move;
% Store the current position in the trajectory array
trajectory(step+1) = position;
end
end

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


Image Analyst
Image Analyst 2023 年 12 月 11 日
See attached demos for random walks. I think all of them are 2-D.

カテゴリ

Help Center および File ExchangeCreating and Concatenating Matrices についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by