annotate sequences/rndwindow.m @ 3:3f77126f7b5f

First major revision of sequence library, now using classdef form, STILL A BIT BROKEN!
author samer
date Wed, 09 Jan 2013 22:22:21 +0000
parents 672052bd81f8
children b1280319413e
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@0 11 opts=prefs('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@3 20 Y=fnseq(@exwin_circ,rndzip(@()randnat(len),opts.state),'stringfn',@strfn);
samer@0 21 else
samer@3 22 Y=fnseq(@exwin,rndzip(@()randnat(len-span+1),opts.state),'stringfn',@strfn);
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