gensalmondata.m

Revision 1 - 6/13/07 at 2:29 pm by e2holmes

Back to revision history for gensalmondata.m
This file is part of the project Generate stochastic population processes
function [observed, totalpop] = gensalmondata();

run('marshmat') %make sure the mat file is up to date
load('marshmat')

burn = 20;
simlen = 70;
agestruc = 0; %age struc == 2 means put in perturbation (0 reproduction one year)
densdep = 1;  %means add density dependence
matsize=length(stableagestruc);
census = ones(matsize,simlen+burn);
census(:,1) = 100000*stableagestruc; %stable and pulse age strucs defined in the marshmat.m, snakefall.m and upcolsteelhead.m files

totalpops=zeros(1,simlen);

for i = 2:(burn+simlen),  
   if(agestruc==2 & i == (burn+2)) census(1,i-1)=0; end %perturbation means no reproduction
	e1=mymvnrnd(length(evarstream), 0, evarstream, 0.2);
   	e2=mymvnrnd(length(evarocean), 0, evarocean, 0.8);
   e=[e1 e2];
   stochmat = stochplace;
   stochmat(stochmat>0)=e(stochmat(stochmat>0)); %this assigns the e variable to the places denoted by stochplace
   if(densdep & i>11) 
   		aveeggdens = mean(census(end,(i-11):(i-2)));
   		prevreleggdens = min(census(end,i-1)/aveeggdens, 3.33);
   		prevreleggdens = max(prevreleggdens,0.333);
   		stochmat(:,end)=stochmat(:,end)*((prevreleggdens-1)*(-0.782/3)+1);
   end
   thisyearmat = themat .* stochmat;
   tmp=thisyearmat(2:matsize,:);
   tmp(tmp>1)=1;
   thisyearmat(2:matsize,:)=tmp;
   
   census(:,i) = thisyearmat*census(:,i-1);
end % i years

%totalpop is the number of eventual spawners alive at time t
totalpop = sum(census(:,(burn+1):end).*(weight'*ones(1,simlen)),1);
observed = sum(census(obsstage,(burn+1):end),1);

sampleerrorsigma = .1*ones(1,simlen); bias=0; 
samperror = normrnd(bias,sampleerrorsigma);
samperror = exp(samperror); % make it lognormal

%observed = observed.*samperror; %add sampling error to spawners count
Sculpin 0.2 | xhtml | problems or comments? | report bugs