samer@0: function o=extractdata(source,dim,range) samer@0: % extractdata - Sequence of extracts from source sequence samer@0: % samer@0: % extractdata :: seq [[Size]], D:natural, [[2]->[Size(D)]] -> seq [[Size2]]. samer@0: % samer@0: % extractdata is basically the same as fndata extract but more efficient. samer@0: samer@0: sz=size(source); samer@0: sz(dim)=range(2)-range(1)+1; samer@0: o.dim=dim; samer@0: o.range=range; samer@0: o=class(o,'extractdata',ddata(source,sz,'datafn',@dfn,'stringfn',@sfn,'nextfn',@next_c)); samer@0: samer@0: samer@0: function x=dfn(o), x=extract(source(o),o.dim,o.range); samer@0: function s=sfn(o) samer@0: s=sprintf('[%d/%d:%d]', o.dim, o.range(1), o.range(2));