Borrar filtros
Borrar filtros

Simulating a 1D Random Walk

11 visualizaciones (últimos 30 días)
William
William el 6 de Dic. de 2023
Comentada: William el 11 de Dic. de 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 comentario
Image Analyst
Image Analyst el 6 de Dic. de 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.

Iniciar sesión para comentar.

Respuesta aceptada

Torsten
Torsten el 6 de Dic. de 2023
Editada: Torsten el 6 de Dic. de 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
  2 comentarios
William
William el 6 de Dic. de 2023
Thank you so much!!!
William
William el 11 de Dic. de 2023

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by