Hello, I have this vector that is constantly changing values for instance the below output might look something like
v = 4 15 3 15 3 16 3 15 2 15
And this will continue to happen till the step size is reached. I do not want any value in the array to repeat ! How do I do this? So 3 15 was repeated twice, I want to force the program to move to a different coordinate versus repeating values. See code below
if true %Random walk in 2D, periodic boundaries
%The script simulates a random walk with periodic boundary conditions. The
xmax = 20; %grid size
ymax = 20; %grid sizensteps = 400; %number of steps in the simulation
x = round(5);y = round(15);plot(x,y,'bo')ht = title('Steps taken = 0');h = [];axis([0.8 xmax+0.2 0.8 ymax+0.2])hold onv=[]for i = 1:nsteps d = randi(4); %direction (north(1), west(2), south(3), east(4))
dx = 0; dy = 0; switch d case 1 dy = 1; case 2 dx = -1; case 3 dy = -1; case 4 dx = 1; end nx = x + dx; ny = y + dy; v(end+1,:)=[nx,ny] %Recording all the steps take
%Now apply periodic boundary conditions
if nx<1 x = x + xmax; nx = nx + xmax; elseif nx>xmax; x = x - xmax; nx = nx - xmax; end if ny<1 y = y + ymax; ny = ny + ymax; elseif ny>ymax; y = y - ymax; ny = ny - ymax; end %Draw a line from the current position to the next position
if ~isempty(h) set(h,'MarkerEdgeColor','b') end line([x nx],[y ny]) h = plot(nx,ny,'r*'); set(ht,'String',['Steps taken = ' num2str(i)]) x = nx; y = ny; pause(0.1) %the pause that refreshes
endhold off end
Best Answer