Simulating a 1D Random Walk
19 views (last 30 days)
Show older comments
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
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.
Accepted Answer
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)
See Also
Categories
Find more on Coordinate Systems in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!