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
|