annotate sequences/rndwindow.m @ 61:eff6bddf82e3 tip

Finally implemented perceptual brightness thing.
author samer
date Sun, 11 Oct 2015 10:20:42 +0100
parents beb8a3f4a345
children
rev   line source
samer@0 1 function Y=rndwindow(X,span,dim,varargin)
samer@3 2 % rndwindow - get random windows of a signal
samer@0 3 %
samer@0 4 % rndwindow ::
samer@0 5 % [Size:[1,E]] ~'E-dimensional signal array',
samer@0 6 % L:natural ~'span of windows to extract',
samer@0 7 % D:1..E ~'dimension to operate along',
samer@0 8 % randstate ~'intial state of rngs'
samer@0 9 % -> seq [arrset(Size,D,L)] ~'seq of arrays of size L in Dth dimension'.
samer@0 10
samer@37 11 opts=options('state',rndstate,'circular',0,varargin{:});
samer@0 12
samer@0 13 sz=size1(X);
samer@0 14 if nargin<3, dim=length(sz); end
samer@0 15 len=sz(dim);
samer@0 16 ran=[0,span-1];
samer@0 17
samer@0 18 if opts.circular,
samer@0 19 ithresh=len-span+1;
samer@23 20 Y=map(@exwin_circ,rndzip(@()randnat(len),opts.state));
samer@0 21 else
samer@23 22 Y=map(@exwin,rndzip(@()randnat(len-span+1),opts.state));
samer@0 23 end
samer@0 24
samer@0 25 function y=exwin(i), y=extract(X,dim,i+ran); end
samer@0 26 function y=exwin_circ(i),
samer@0 27 if i<=ithresh
samer@0 28 y=extract(X,dim,i+ran);
samer@0 29 else
samer@0 30 y=cat(dim,extract(X,dim,[i,len]),extract(X,dim,[1,span-(1+len-i)]));
samer@0 31 end
samer@0 32 end
samer@0 33
samer@0 34 function s=strfn(a)
samer@0 35 s=sprintf('rndwindow(%s,%d)',tostring(X),span);
samer@0 36 end
samer@0 37 end
samer@0 38
samer@0 39
samer@0 40
samer@0 41
samer@0 42
samer@0 43