annotate signals/@fsignal/fsignal.m @ 13:03694e5c8365
Reorganised some high order list functions to correct class-based method dispatch; fixed some docs.
author |
samer |
date |
Wed, 16 Jan 2013 12:12:34 +0000 |
parents |
f7fb679637ff |
children |
|
rev |
line source |
samer@10
|
1 % fsignal - Class for functional discrete time signals
|
samer@10
|
2 %
|
samer@10
|
3 % fsignal ::
|
samer@10
|
4 % R:nonneg ~'sampling rate',
|
samer@10
|
5 % C:natural ~'number of channels',
|
samer@10
|
6 % natural ~'signal length'
|
samer@10
|
7 % -> fsignal(C,R).
|
samer@10
|
8 classdef fsignal
|
samer@10
|
9 properties (GetAccess=private, SetAccess=immutable)
|
samer@10
|
10 rate_
|
samer@10
|
11 channels_
|
samer@10
|
12 length_
|
samer@10
|
13 end
|
samer@10
|
14
|
samer@10
|
15 methods (Abstract)
|
samer@10
|
16 X=data(a)
|
samer@10
|
17 s=tostring(a)
|
samer@10
|
18 y=extract(a,dim,range)
|
samer@10
|
19 end
|
samer@10
|
20
|
samer@10
|
21 methods (Sealed)
|
samer@10
|
22 function a=fsignal(rate,ch,length)
|
samer@10
|
23 a.rate_=rate;
|
samer@10
|
24 a.channels_=ch;
|
samer@10
|
25 a.length_=length;
|
samer@10
|
26 end
|
samer@10
|
27
|
samer@10
|
28 function l=length(a), l=a.length_; end
|
samer@10
|
29 function c=channels(a), c=a.channels_; end
|
samer@10
|
30 function r=rate(a), r=a.rate_; end
|
samer@10
|
31
|
samer@10
|
32 function varargout=size(a,n),
|
samer@10
|
33 z=[a.channels,a.length];
|
samer@10
|
34 if nargin==1
|
samer@10
|
35 if nargout<=1, varargout={z};
|
samer@10
|
36 else varargout=num2cell(z);
|
samer@10
|
37 end
|
samer@10
|
38 else
|
samer@10
|
39 varargout{1}=z(n);
|
samer@10
|
40 end
|
samer@10
|
41 end
|
samer@10
|
42
|
samer@10
|
43 function display(a)
|
samer@10
|
44 fprintf(' %s :: fsignal(%d,%g)\n',tostring(a),a.channels,a.rate);
|
samer@10
|
45 end
|
samer@10
|
46
|
samer@10
|
47 function y=eval(a,t)
|
samer@10
|
48 range=[min(t),max(t)];
|
samer@10
|
49 y=extract(a,2,range);
|
samer@10
|
50 y=y(:,t-(range(1)-1));
|
samer@10
|
51 end
|
samer@10
|
52 end
|
samer@10
|
53 end
|