MATLAB: Make Random Walk into 3D

3drandom walk

I have a code set up for a randomwalk already, but how would I alter it to make a 3D Random Walk?
steplenght = .01;
positions = zeros(2,100000);
currentPosition = [0;0];
currentTimeStep = 2;
while currentPosition(1,1)^2 + currentPosition(2,1)^2 < 1
randomDirection = 2*pi*rand();
unitDisplacementVector = [cos(randomDirection); sin(randomDirection)];
displacementVector = stepLength*unitDisplacementVector;
currentPosition = currentPosition + displacementVector;
positions(:,currentTimeStep) = currentPosition;
currentTimeStep = currentTimeStep + 1;
end
positions = positions(:,1:currentTimeStep-1);
hold on;
scatter(positions(1,:),positions(2,:),2,'filled');
theta = linspace(0,2*pi);
plot(cos(theta),sin(theta));

Best Answer

I do this
dt = .01;
[x, y, z] = deal( 0 );
[X,Y,Z] = sphere(30);
surf(X,Y,Z,'edgecolor',[1 1 1]*0.8,'Facecolor','none')
hold on
k = 0;
while norm([x y z])^2 < 1 && k < 1000
t = 180*(rand-1);
p = 180*(rand-1);
% spherical system of coordinates
x = x + dt*cosd(t)*cosd(p);
y = y + dt*cosd(t)*sind(p);
z = z + dt*sind(p);
k = k + 1;
pause(0.1)
plot3(x,y,z,'.b')
end
hold off
Related Question