samer@10: % fsignal - Class for functional discrete time signals samer@10: % samer@10: % fsignal :: samer@10: % R:nonneg ~'sampling rate', samer@10: % C:natural ~'number of channels', samer@10: % natural ~'signal length' samer@10: % -> fsignal(C,R). samer@10: classdef fsignal samer@10: properties (GetAccess=private, SetAccess=immutable) samer@10: rate_ samer@10: channels_ samer@10: length_ samer@10: end samer@10: samer@10: methods (Abstract) samer@10: X=data(a) samer@10: s=tostring(a) samer@10: y=extract(a,dim,range) samer@10: end samer@10: samer@10: methods (Sealed) samer@10: function a=fsignal(rate,ch,length) samer@10: a.rate_=rate; samer@10: a.channels_=ch; samer@10: a.length_=length; samer@10: end samer@10: samer@10: function l=length(a), l=a.length_; end samer@10: function c=channels(a), c=a.channels_; end samer@10: function r=rate(a), r=a.rate_; end samer@10: samer@10: function varargout=size(a,n), samer@10: z=[a.channels,a.length]; samer@10: if nargin==1 samer@10: if nargout<=1, varargout={z}; samer@10: else varargout=num2cell(z); samer@10: end samer@10: else samer@10: varargout{1}=z(n); samer@10: end samer@10: end samer@10: samer@10: function display(a) samer@10: fprintf(' %s :: fsignal(%d,%g)\n',tostring(a),a.channels,a.rate); samer@10: end samer@10: samer@10: function y=eval(a,t) samer@10: range=[min(t),max(t)]; samer@10: y=extract(a,2,range); samer@10: y=y(:,t-(range(1)-1)); samer@10: end samer@10: end samer@10: end