Clear Filters
Clear Filters

Simulating a 1D Random Walk

11 views (last 30 days)
William
William on 6 Dec 2023
Commented: William on 11 Dec 2023
This is my code:
% Function to simulate 1D random walk
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
% Step 2: Plot the entire trajectory for a single 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');
% Step 3: Repeat the process for different values of P and create histograms
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
Its giving me an error on N.
  1 Comment
Image Analyst
Image Analyst on 6 Dec 2023
This is not valid MATLAB code. You cannot have a script that starts with a function. It will, and does, throw an error. Your function needs to be at the END of your script. Or else don't have it be a function. Also, don't put the right hand side of the = sign be on the line below the line that takes the assignment.

Sign in to comment.

Accepted Answer

Torsten
Torsten on 6 Dec 2023
Edited: Torsten on 6 Dec 2023
% Step 2: Plot the entire trajectory for a single 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')
% Step 3: Repeat the process for different values of P and create histograms
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 to simulate 1D random walk
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

More Answers (0)

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!