% Move fish randomly but restricted to lie on grid
% At most one fish can occupy a grid cell position
% Inputs (run fish4init to get sample inputs)
% fisho = list of original fish positions
% d = size of grid to put fish on (1:d,1:d)
% n = number of time steps to run
% Outputs:
% plot of fish positions
%
% Other routines used: plotfish MoveFishEast, MoveFishNorth,
% MoveFishSouth, MoveFishWest, updateboundaries
%
% discretize original fish positions onto grid
% (add an extra row and column at all sides to accomodate toroidal geometry)
fish = zeros(d+2,d+2);
where = max( min( [ round(real(fisho)), round(imag(fisho)) ], d), 1);
wherelin=where(:,1)+where(:,2)*d;
fish(wherelin)=ones(length(wherelin),1);
rand('seed',0);
hold off, clf
dbug = 0;
%
% loop over time steps
for i=1:n,
oldfish=fish;
%
% pick a random direction (1=E, 2=N, 3=W, 4=S, later 0 = no move)
direction = round( 4 * rand(d+2,d+2) + .5);
%
% update boundaries
updateboundaries
MoveFishEast
MoveFishNorth
MoveFishWest
MoveFishSouth
%
% plot fish positions
plotfish,
end