function rsim=ConnLocGaussian(n,distfunc,sigmaG)
% Calculates whole connectivity matrix
%this is a version that is slightly quicker than the GaussianLocConnFunc
%at higher n>100...does the same though!
% ARGS:
% n = length and width of the grid;
% distfunc = @distSheet (to calculate euclidian dist)
% steepness = steepness of the function #conn/#all.possible.conn over
% distance
% RETURNS:
% rsim = sparse connectivity matrix
%check if matlabpool is open and if not then open it
if matlabpool('size') == 0
matlabpool
end
% width of the square
nsub=n^2;
%lay out coordinates
[coordx,coordy] = meshgrid(1:n,1:n);
coorx=reshape(coordx,nsub,1);
coory=reshape(coordy,nsub,1);
% Calculate the locations of the sparse elements
%for i=1:nsub
% make sparse matrix
rsim=sparse(nsub,nsub);
for i=1:nsub
% call distfinc (i.e. sheet, torus etc
distM=(distfunc([coorx(i) coory(i)],[coorx coory])); %gets all the distances from all other points to current point
p=exp(-distM.^2./(2*sigmaG^2));%generate gaussian
p(distM==0)=0;%no self connection
p=p/max(p);%renormalise
pindex=find(p>0.022);%cut off unconnected ones
pV=rand(size(pindex));
pConn=p(pindex)>pV;
indTo=pindex(pConn);
indTo=indTo(indTo~=i);
rsim=rsim+sparse(indTo,i,1,nsub,nsub);
end
rsim(rsim>0)=1;
end