Mercurial > hg > ishara
comparison arrows/@asignal/construct.m @ 0:672052bd81f8
Initial partial import.
author | samer |
---|---|
date | Wed, 19 Dec 2012 22:38:28 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:672052bd81f8 |
---|---|
1 function u=construct(s,sizes_in) | |
2 src=construct(s.source); | |
3 ch=channels(s.source); | |
4 | |
5 span=s.block; | |
6 jump=s.hop; | |
7 olap=span-jump; | |
8 rdr=src.reader(jump); | |
9 | |
10 if olap>0 | |
11 buf=[zeros(ch,jump),sigreadn(src,olap)]; % preload with overlap | |
12 OL1=1:olap; | |
13 OL=(jump+1):span; | |
14 HOP=(olap+1):span; | |
15 process=@proc; | |
16 fprintf(' Using signal reader with overlap=%d.\n',olap); | |
17 else | |
18 process=@proc0; | |
19 fprintf(' Using zero-overlap signal reader.\n'); | |
20 end | |
21 | |
22 u=mkunit(s); | |
23 u.starting = src.start; | |
24 u.stopping = src.stop; | |
25 u.dispose = src.dispose; | |
26 u.process = process; | |
27 u.sizes_out = {[ch,span]}; | |
28 | |
29 function out=proc0, | |
30 [out,rem]=rdr(); | |
31 if rem>0, error('ARROW:EOF','End of stream'); end | |
32 end | |
33 | |
34 function out=proc, | |
35 buf(:,OL1)=buf(:,OL); % copy overlap from end of buf to head | |
36 [buf(:,HOP),rem]=rdr(); | |
37 if rem>0, error('ARROW:EOF','End of stream'); end | |
38 %out=[buf,chunk]; | |
39 out=buf; | |
40 end | |
41 | |
42 % old version | |
43 function out=proc1, | |
44 [chunk,rem]=rdr(); | |
45 if rem>0, error('ARROW:EOF','End of stream'); end | |
46 out=[buf,chunk]; | |
47 buf=out(:,OL); | |
48 end | |
49 end |