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