% succession.m
% Markov Chain model for landscape succession
% from Ecobeaker - Math 151
% This is to generate a simple landscape succession
% model similar to Ecobeaker in which there are
% 3 species (Bare soil, Grass and Shrub) with
% the transition matrix given by the matrix P
% The program shows a landscape of size 20 x 20 with
% initially all in Bare soil and then each location transitions
% according to the matrix probabilities to a different type
% with the landscape displayed along with a bar chart of the
% number of elements of the matrix of each type (e.g.
% total area in each vegetation type at each time ),
% this version displays an animation of the landscape and bar
% chart after the code runs
%
% the matrix which holds the landscape is L
%
L=zeros(20,20);
%
% generate a random matrix for each location
%
%
%define the transition matrix such as
P=[.9 0 0; .1 .85 0; 0 .15 1 ]
% where the elements give transition probabilities from
% the row to the column
%
% k is the number of time steps
%
for k=1:100
%
% R holds the random numbers for each locations transition
% and S holds the current state vector
%
R=rand(20,20);
S=zeros(3);
%
% The landscape matrix element values are
% 0 for Bare Soil (state 1)
% 50 for Grass (state 2)
% 100 for Shrub (state 3)
%
for i=1:20
for j=1:20
%
% it is a check as to whether L(i,j) has been modified
%
it=0;
if L(i,j)==0 & it==0
if R(i,j) <= P(1,1)
L(i,j)=0;
else
if R(i,j) < P(1,1)+P(2,1)
L(i,j)=50;
else L(i,j)=100;
end;
end;
it=1;
else;
end;
if L(i,j)==50 & it==0
if R(i,j) < P(1,2)
L(i,j)=0;
else
if R(i,j) < P(1,2)+P(2,2)
L(i,j)=50;
else L(i,j)=100;
end;
end;
it=1;
else;
end;
if L(i,j)==100 & it==0
if R(i,j) < P(1,3)
L(i,j)=0;
else
if R(i,j) < P(1,3)+P(2,3)
L(i,j)=50;
else L(i,j)=100;
end;
end;
else;
end;
if L(i,j)==0
S(1)=S(1)+1;
else
if L(i,j)==50
S(2)=S(2)+1;
else
S(3)=S(3)+1;
end;
end;
end;
end;
figure(1)
bar(S,2,'EraseMode','xor')
figure(2)
image(L,'EraseMode','xor')
k
end;