comparison signals/@sigarray/sigarray.m @ 1:289445d368a7

import.
author samer
date Wed, 19 Dec 2012 22:46:05 +0000
parents
children
comparison
equal deleted inserted replaced
0:672052bd81f8 1:289445d368a7
1 classdef sigarray < signal
2 properties (GetAccess=private, SetAccess=immutable)
3 fs
4 array
5 end
6 methods
7 function s=sigarray(array,rate)
8 if nargin<2, rate=nan; end
9 s.array=array;
10 s.fs=rate;
11 end
12
13 function s=tostring(sig)
14 s=sprintf('sigarray(<%dx%d>)',size(sig.array,1),size(sig.array,2));
15 end
16
17 function c=channels(s), c=size(s.array,1); end
18 function c=rate(s), c=s.fs; end
19 function s=construct(sig)
20 array=sig.array;
21 ch=size(array,1);
22 length=size(array,2);
23 pos=0;
24
25 s.start = @nop;
26 s.stop = @nop;
27 s.dispose = @nop;
28 s.reader = @reader;
29
30 function r=reader(n)
31 r = @next;
32 CHUNK = 1:uint32(n);
33 function [x,rem]=next
34 if pos+n<=length
35 x=array(:,pos+CHUNK); rem=0;
36 pos=pos+n;
37 else
38 rem=n-(length-pos);
39 x=[array(:,pos+1:end),zeros(ch,rem)];
40 pos=length;
41 end
42 end
43 end
44 end
45 end
46 end