Mercurial > hg > ishara
diff sequences/@subsampdata/subsampdata.m @ 0:672052bd81f8
Initial partial import.
author | samer |
---|---|
date | Wed, 19 Dec 2012 22:38:28 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sequences/@subsampdata/subsampdata.m Wed Dec 19 22:38:28 2012 +0000 @@ -0,0 +1,38 @@ +function d=subsampdata(a,b,varargin) +% subsampdata - Use arbitrary function to test and filter elements of another sequence +% +% subsampdata :: +% natural ~ sample rate, +% data(A), ~ source data, +% ... ~ options) +% -> data(A). +% +% Options +% 'datafn':: Data A->A ~ override function to get data +% 'stringfn':: Data A->String ~ override conversion to string +% 'nextfn':: Data A->(Data A | []) ~ override next function +% +% Methods +% +% source :: filterdata(A) -> data(A). + +if nargin==0, a=subsampdata(1,singleton(0)); end +if isa(a,'subsampdata'), d=a; +else + d.n=a; + + opts=prefs('datafn',@datafn,'stringfn',@stringfn,'sizecheck',0,varargin{:}); + opts.nextfn=@nextfn; + d=class(d,'subsampdata',ddata(b,size(b),opts)); +end + +function x=datafn(d), x=head(source(d)); +function s=stringfn(d), s=sprintf('subsamp(%d)',tostring(d.n)); +function o=nextfn(o) + for i=1:o.n + o=next_c(o); + if isempty(o), break; end + end + + +