Multiple 3d random walks
    조회 수: 12 (최근 30일)
  
       이전 댓글 표시
    
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');
댓글 수: 0
채택된 답변
  Torsten
      
      
 2022년 12월 8일
        
      편집: Torsten
      
      
 2022년 12월 8일
  
      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
추가 답변 (0개)
참고 항목
카테고리
				Help Center 및 File Exchange에서 Particle & Nuclear Physics에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



