Mercurial > hg > ishara
annotate signals/@sigbinop/sigbinop.m @ 19:1eb0ea29ec40
Doesn't belong here.
author | samer |
---|---|
date | Thu, 17 Jan 2013 13:32:19 +0000 |
parents | 289445d368a7 |
children |
rev | line source |
---|---|
samer@1 | 1 classdef sigbinop < signal |
samer@1 | 2 properties (GetAccess=private, SetAccess=immutable) |
samer@1 | 3 op |
samer@1 | 4 sig1 |
samer@1 | 5 sig2 |
samer@1 | 6 chans |
samer@1 | 7 end |
samer@1 | 8 methods |
samer@1 | 9 function s=sigbinop(f,sig1,sig2,chf) |
samer@1 | 10 if isinf(unify_rates(rate(sig1),rate(sig2))), |
samer@1 | 11 error('Sample rate mismatch'); |
samer@1 | 12 end |
samer@1 | 13 if nargin<4, |
samer@1 | 14 chf=@(c1,c2)size(f(zeros(c1,1),zeros(c2,1)),1); |
samer@1 | 15 end |
samer@1 | 16 s.op=f; |
samer@1 | 17 s.sig1=sig1; |
samer@1 | 18 s.sig2=sig2; |
samer@1 | 19 s.chans=chf(channels(sig1),channels(sig2)); |
samer@1 | 20 end |
samer@1 | 21 |
samer@1 | 22 function c=channels(s), c=s.chans; end |
samer@1 | 23 function r=rate(s), r=rate(s.sig1); end |
samer@1 | 24 function s=construct(sig) |
samer@1 | 25 |
samer@1 | 26 s1=construct(sig.sig1); |
samer@1 | 27 s2=construct(sig.sig2); |
samer@1 | 28 op=sig.op; |
samer@1 | 29 |
samer@1 | 30 s.start = @start; |
samer@1 | 31 s.stop = @stop; |
samer@1 | 32 s.dispose = @dispose; |
samer@1 | 33 s.reader = @reader; |
samer@1 | 34 |
samer@1 | 35 function start, s1.start(); s2.start(); end |
samer@1 | 36 function stop, s1.stop(); s2.stop(); end |
samer@1 | 37 function dispose, s1.dispose(); s2.dispose(); end |
samer@1 | 38 function r=reader(n) |
samer@1 | 39 r1=s1.reader(n); |
samer@1 | 40 r2=s2.reader(n); |
samer@1 | 41 r =@next; |
samer@1 | 42 function [x,rem]=next |
samer@1 | 43 [x1,rem1]=r1(); |
samer@1 | 44 [x2,rem2]=r2(); |
samer@1 | 45 x=op(x1,x2); |
samer@1 | 46 rem=max(rem1,rem2); |
samer@1 | 47 end |
samer@1 | 48 end |
samer@1 | 49 end |
samer@1 | 50 function s=tostring(sig) |
samer@1 | 51 s=sprintf('(%s <%s> %s)',tostring(sig.sig1),tostring(sig.op),tostring(sig.sig2)); |
samer@1 | 52 end |
samer@1 | 53 end |
samer@1 | 54 end |