annotate signals/@siglzcat/construct.m @ 61:eff6bddf82e3 tip

Finally implemented perceptual brightness thing.
author samer
date Sun, 11 Oct 2015 10:20:42 +0100
parents 289445d368a7
children
rev   line source
samer@1 1 function s=construct(sig)
samer@1 2 fs=rate(sig.head);
samer@1 3 ch=channels(sig.head);
samer@1 4 sc=construct(sig.head);
samer@1 5 sx=sig.tail;
samer@1 6
samer@1 7 s.start = @start;
samer@1 8 s.stop = @stop;
samer@1 9 s.dispose = @dispose;
samer@1 10 s.reader = @reader;
samer@1 11
samer@1 12 function start, sc.start(); end
samer@1 13 function stop, sc.stop(); end
samer@1 14 function dispose, sc.dispose(); end
samer@1 15 function r=reader(n)
samer@1 16 rc=sc.reader(n);
samer@1 17 r = @next;
samer@1 18 function [x,rem]=next
samer@1 19 [x,rem]=rc();
samer@1 20 while rem>0 && ~isempty(sx) % current signal exhausted, try next
samer@1 21 sc.dispose();
samer@1 22 [sig2,sx]=sx();
samer@1 23
samer@1 24 fs=unify_rates(fs,rate(sig2));
samer@1 25 if isinf(fs), error('sigcat:Signal sampling rate mismatch'); end
samer@1 26 ch=unify_channels(ch,channels(sig2));
samer@1 27 if isinf(ch), error('sigcat:Signal channels count mismatch'); end
samer@1 28 sc=construct(sig2);
samer@1 29
samer@1 30 [x(:,end-rem+1:end),rem]=sigreadn(sc,rem);
samer@1 31 rc=sc.reader(n);
samer@1 32 end
samer@1 33 end
samer@1 34 end
samer@1 35 end