samer@1: classdef sigmap < signal samer@1: properties (GetAccess=private, SetAccess=immutable) samer@1: fun samer@1: sig samer@1: chans samer@1: end samer@1: methods samer@1: function s=sigmap(f,sig,chf) samer@1: if nargin<3, chf=@(c1)size(f(zeros(c1,1)),1); end samer@1: s.fun=f; samer@1: s.sig=sig; samer@1: s.chans=chf(channels(sig)); samer@1: end samer@1: samer@1: function s=tostring(sig) samer@1: s=sprintf('map(%s,%s)',tostring(sig.fun),tostring(sig.sig)); samer@1: end samer@1: samer@1: function c=rate(s), c=rate(s.sig); end samer@1: function c=channels(s), c=s.chans; end samer@1: samer@1: function s=construct(sig) samer@1: f=sig.fun; samer@1: s1=construct(sig.sig); samer@1: s.start = s1.start; samer@1: s.stop = s1.stop; samer@1: s.dispose = s1.dispose; samer@1: s.reader = @reader; samer@1: samer@1: function r=reader(n) samer@1: r1=s1.reader(n); samer@1: r =@next; samer@1: function [x,rem]=next samer@1: [x1,rem]=r1(); samer@1: x=f(x1); samer@1: end samer@1: end samer@1: end samer@1: end samer@1: end