annotate sequences/rndscanl.m @ 61:eff6bddf82e3 tip

Finally implemented perceptual brightness thing.
author samer
date Sun, 11 Oct 2015 10:20:42 +0100
parents 79038cbcce00
children
rev   line source
samer@0 1 function X=rndscanl(gen,s0,varargin)
samer@0 2 % rndscanl - Random scanl
samer@0 3 %
samer@0 4 % rndscanl ::
samer@0 5 % (S,A -> rndgen S) ~'random scanner',
samer@0 6 % S ~'initial state',
samer@0 7 % seq A,
samer@0 8 % rndstate ~'initial random state'
samer@0 9 % -> seq S.
samer@0 10
samer@0 11 n=length(varargin)-1;
samer@0 12 rs0=varargin{n+1};
samer@0 13 if n>1,
samer@25 14 X=zipaccum(@zafn,{s0,rs0},varargin{1:n});
samer@0 15 elseif n==1
samer@25 16 X=mapaccum(@mafn,{s0,rs0},varargin{1});
samer@0 17 else
samer@23 18 X=unfold(@ufn,{s0,rs0});
samer@0 19 end
samer@0 20
samer@0 21 function [x,s]=ufn(s0)
samer@0 22 setrndstate(s0{2});
samer@0 23 x=gen(s0{1});
samer@0 24 s={x,getrndstate};
samer@0 25 end
samer@0 26
samer@0 27 function [x,s]=mafn(y,s0)
samer@0 28 setrndstate(s0{2});
samer@0 29 x=gen(s0{1},y);
samer@0 30 s={x,getrndstate};
samer@0 31 end
samer@0 32
samer@0 33 function [x,s]=zafn(varargin)
samer@0 34 s0=varargin{n+1};
samer@0 35 setrndstate(s0{2});
samer@0 36 x=gen(s0{1},varargin{1:n});
samer@0 37 s={x,getrndstate};
samer@0 38 end
samer@0 39 end
samer@0 40
samer@0 41
samer@0 42