You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

#### 51 lines 1.4 KiB Matlab Raw Permalink Blame History

 ```function z=code(mu,s,sigma,noise,norm,stdnorm,wrap) ``` ```if nargin<7 || isempty(wrap) ``` ``` wrap=0; ``` ```end ``` ``` ``` ```z=zeros(1,length(s),'single'); ``` ``` ``` ```if isnan(mu) ``` ``` return; %NaNs = distribution all zeros ``` ```end ``` ``` ``` ```%Make distribution with given standard deviation and mean, and with an amplitude of one. ``` ```%Used to define input PPCs (when all have same precision) and V weights ``` ```if wrap %input space wraps around ``` ``` a=s(end)-s(1)+s(2)-s(1); ``` ``` z=z+exp(-(0.5/sigma.^2).*min([abs(mu-s);abs(mu-(s+a));abs(mu-(s-a))]).^2); ``` ```else %no wrap-around ``` ``` z=z+exp(-(0.5/sigma.^2).*(mu-s).^2); ``` ```end ``` ``` ``` ```%add noise ``` ```if nargin>3 && noise ``` ``` %add poisson noise ``` ``` z=single(imnoise(uint8(125.*z),'poisson'))./125; ``` ```end ``` ``` ``` ```%Modify distibution so that it has a sum of one, used to define W weights ``` ```if nargin>4 && norm ``` ``` spacing=mean(diff(s)); ``` ``` z=spacing.*z./(sigma*sqrt(2*pi)); ``` ``` ``` ``` if 0 %~wrap ``` ``` %for weights cut-off at edges, adjust weights at edge so that sum remains one ``` ``` if z(1)>z(end) ``` ``` z(1)=z(1)+1-sum(z); ``` ``` else ``` ``` z(end)=z(end)+1-sum(z); ``` ``` end ``` ``` end ``` ```end ``` ``` ``` ```%Modify distibution so that it would have an amplitude of one if sigma=stdnorm ``` ```%(amplitude is <1 if sigma>stdnorm, and amplitude is >1 if sigma5 && stdnorm ``` ``` z=stdnorm.*z/sigma; ``` ```end ``` ``` ```