Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function [G,n,m] = preypredator (M,ngen)
- %%used an if loop to determine if M is a valid square number
- if size(M) == size(M')
- disp('This matrix is square and valid')
- else
- disp('The matrix is not valid, please enter a new matrix')
- return;
- end
- for z=1:numel(M)
- if M(z)~=2 && M(z)~=1 && M(z)~=0
- disp('This matrix contains invalid values')
- end
- return;
- end
- if ngen<0
- disp('Please enter valid inputs')
- return;
- end
- for gz=1:ngen
- for z = 1:numel(M)
- if z==M(i) %%middle of matrix
- nbor (1) = M(x-1,y-1);
- nbor (2) = M(x,y-1);
- nbor (3) = M(x+1,y-1);
- nbor (4) = M(x-1,y);
- nbor (5) = M(x,y);
- nbor (6) = M(x+1,y);
- nbor (7) = M(x-1,y+1);
- nbor (8) = M(x+1,y+1);
- nbor (9) = M(x+1,y+1);
- else
- if z==M(end,end) %%Bottom right corner
- nbor (1) = M(end-1,end-1);
- nbor (2) = M(end-1,end);
- nbor (3) = M(end-1,end);
- nbor (4) = M(end,end-1);
- nbor (5) = M(end,end);
- nbor (6) = M(end,1);
- nbor (7) = M(1,end-1);
- nbor (8) = M(1,end);
- nbor (9) = M(1,1);
- else
- if z==M(1,1) %%top left corner
- nbor (1) = M(end,end);
- nbor (2) = M(end,1);
- nbor (3) = M(end,2);
- nbor (4) = M(1,end);
- nbor (5) = M(1,1);
- nbor (6) = M(1,2);
- nbor (7) = M(2,end);
- nbor (8) = M(2,1);
- nbor (9) = M(2,2);
- else
- if z==M(end,1) %% Bottom left corner
- nbor (1) = M(end-1,end);
- nbor (2) = M(end-1,1);
- nbor (3) = M(end-1,2);
- nbor (4) = M(end,end);
- nbor (5) = M(end,1);
- nbor (6) = M(end,2);
- nbor (7) = M(1,end);
- nbor (8) = M(1,1);
- nbor (9) = M(1,2);
- else
- if z==M(1,end) %% Top right corner
- nbor (1) = M(end,end-1);
- nbor (2) = M(1,end-1);
- nbor (3) = M(end,1);
- nbor (4) = M(1,end-1);
- nbor (5) = M(1,end);
- nbor (6) = M(1,1);
- nbor (7) = M(2,end-1);
- nbor (8) = M(2,end);
- nbor (9) = M(2,1);
- else %%Top row wrapping
- if z==M(1,y) z~=M(1,1) && z~=M(1,end);
- nbor (1) = M(end,2);
- nbor (2) = M(end,end-2);
- nbor (3) = M(end,end-1);
- nbor (4) = M(1,2);
- nbor (5) = M(1,end-2);
- nbor (6) = M(1,end-1);
- nbor (7) = M(2,2);
- nbor (8) = M(2,end-2);
- nbor (9) = M(2,end-1);
- %%Bottom row wrapping
- else
- if z==M(end,y) z~=M(end,1) && z~=M(end,end);
- nbor (1) = M(1,2);
- nbor (2) = M(1,end-2);
- nbor (3) = M(1,end-1);
- nbor (4) = M(end,2);
- nbor (5) = M(end,end-2);
- nbor (6) = M(end,end-1);
- nbor (7) = M(end-1,2);
- nbor (8) = M(end-1,end-2);
- nbor (9) = M(end-1,end-1);
- %%Left side wrapping
- else
- if z==M(x,1) z~=M(1,1) && z~=M(end,1);
- nbor (1) = M(2,end);
- nbor (2) = M(2,1);
- nbor (3) = M(2,2);
- nbor (4) = M(end-2,end);
- nbor (5) = M(end-2,1);
- nbor (6) = M(end-2,2);
- nbor (7) = M(end-1,end);
- nbor (8) = M(end-1,1);
- nbor (9) = M(end-1,1);
- %%Right side wrapping
- else
- if z==M(x,end) z~=M(1,end) && z~=M(end,end);
- nbor (1) = M(2,end-1);
- nbor (2) = M(2,end);
- nbor (3) = M(2,1);
- nbor (4) = M(end-2,end-1);
- nbor (5) = M(end-2,end);
- nbor (6) = M(end-2,1);
- nbor (7) = M(end-1,end-1);
- nbor (8) = M(end-1,end);
- nbor (9) = M(end-1,1);
- end
- end
- end
- end
- end
- end
- end
- end
- end
- end
- end
- %%rules 0-0-0
- if nbor(1)==0 && nbor(2)==0 && nbor(3)==0
- EV(z) = 0;
- elseif nbor(4)==0 && nbor(5)==0 && nbor(6)==0
- EV(z) = 0;
- elseif nbor(7)==0 && nbor(8)==0 && nbor(9)==0
- EV(z) =0;
- % 1-0-0
- elseif nbor(1)==1 && nbor(2)==0 && nbor(3)==0
- EV(z) = 1;
- elseif nbor(4)==1 && nbor(5)==0 && nbor(6)==0
- EV(z) = 1;
- elseif nbor(7)==1 && nbor(8)==0 && nbor(9)==0
- EV(z) =1;
- % 0-1-0
- elseif nbor(1)==0 && nbor(2)==1 && nbor(3)==0
- EV(z) = 1;
- elseif nbor(4)==0 && nbor(5)==1 && nbor(6)==0
- EV(z) = 1;
- elseif nbor(7)==0 && nbor(8)==1 && nbor(9)==0
- EV(z) = 1;
- % 0-0-1
- elseif nbor(1)==0 && nbor(2)==0 && nbor(3)==1
- EV(z) = 1;
- elseif nbor(4)==0 && nbor(5)==0 && nbor(6)==1
- EV(z) = 1;
- elseif nbor(7)==0 && nbor(8)==0 && nbor(9)==1
- EV(z) = 1;
- % 1-1-0
- elseif nbor(1)==1 && nbor(2)==1 && nbor(3)==0
- EV(z) = 0;
- elseif nbor(4)==1 && nbor(5)==1 && nbor(6)==0
- EV(z) = 0;
- elseif nbor(7)==1 && nbor(8)==1 && nbor(9)==0
- EV(z) = 0;
- % 0-1-1
- elseif nbor(1)==0 && nbor(2)==1 && nbor(3)==1
- EV(z) = 0;
- elseif nbor(4)==0 && nbor(5)==1 && nbor(6)==1
- EV(z) = 0;
- elseif nbor(7)==0 && nbor(8)==1 && nbor(9)==1
- EV(z) = 0;
- elseif nbor(1)==1 && nbor(2)==0 && nbor(3)==1
- EV(z) = 1;
- elseif nbor(4)==1 && nbor(5)==0 && nbor(6)==1
- EV(z) = 1;
- elseif nbor(7)==1 && nbor(8)==0 && nbor(9)==1
- EV(z) = 1;
- elseif nbor(1)==1 && nbor(2)==1 && nbor(3)==1
- EV(z) = 1;
- elseif nbor(1)==1 && nbor(2)==1 && nbor(3)==1
- EV(z) = 1;
- elseif nbor(1)==1 && nbor(2)==1 && nbor(3)==1
- EV(z) = 0;
- else
- disp('There is an error')
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement