Mercurial > hg > ishara
diff sinks/@sinkmap/sinkmap.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/sinks/@sinkmap/sinkmap.m Wed Dec 19 22:38:28 2012 +0000 @@ -0,0 +1,42 @@ +% sinkmap - sink that applies arbitrart function before sending to subsink. +% +% sinkmap :: +% ([[C1,N]] -> [[C2,N]]) ~'function to tranform samples', +% (C2:natural -> C1:natural) ~'function to compute number of channels', +% sink(C2,R) +% -> sink(C1,R). +classdef sinkmap < sink + properties (GetAccess=private,SetAccess=immutable) + fun + dest + chans + end + methods + function s=sinkmap(f,chf,sig) + s.fun=f; + s.sig=sig; + s.chans=chf(channels(dest)); + end + + function c=channels(s), c=s.chans; end + function c=rate(s), c=rate(s.dest); end + function s=construct(sig) + + f=sig.fun; + s1=construct(sig.dest); + s.start = s1.start; + s.stop = s1.stop; + s.dispose = s1.dispose; + s.writer = @writer; + + function r=writer(n) + r1=s1.writer(n); + r =@(x)r1(f(x)); + end + end + function s=tostring(sig) + s=sprintf('map(%s,%s)',tostring(sig.fun),tostring(sig.dest)); + end + end + end +end