Mercurial > hg > ishara
annotate signals/@sigarray/sigarray.m @ 28:673b8e45d05a
Tidied up indentation.
author | samer |
---|---|
date | Sat, 19 Jan 2013 14:40:54 +0000 |
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 |