Mercurial > hg > ltpda
diff m-toolbox/classes/@fsdata/fsdata.m @ 0:f0afece42f48
Import.
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Wed, 23 Nov 2011 19:22:13 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/m-toolbox/classes/@fsdata/fsdata.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,256 @@ +% FSDATA frequency-series object class constructor. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% DESCRIPTION: FSDATA frequency-series object class constructor. +% Create a frequency-series data object. +% +% SUPER CLASSES: data2D < ltpda_data < ltpda_nuo < ltpda_obj +% +% CONSTRUCTORS: +% +% fsd = fsdata() - creates a blank frequency-series object +% fsd = fsdata(y) - creates a frequency-series object with the given +% y-data. Sample rate of the data is assumed to +% be 1Hz. +% fsd = fsdata(f,y) - creates a frequency-series object with the given +% (x,y)-data. The sample rate is then set as +% 2*x(end). +% fsd = fsdata(y,fs) - creates a frequency-series object with the given +% y-data and sample rate. The frequency +% vector is grown assuming the first y +% sample corresponds to 0Hz and the last +% sample corresponds to the Nyquist +% frequency. +% fsd = fsdata(x,y,fs) - creates a frequency-series object with the given +% x,y-data and sample rate. +% +% VERSION: $Id: fsdata.m,v 1.62 2011/03/30 13:17:33 mauro Exp $ +% +% SEE ALSO: tsdata, fsdata, xydata, cdata, data2D, data3D, xyzdata +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +classdef (Hidden = true) fsdata < data2D + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Property definition % + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + %---------- Public (read/write) Properties ---------- + properties + end + + %---------- Protected read-only Properties ---------- + properties (GetAccess = public, SetAccess = protected) + t0 = time(0); % time-stamp of the first data sample + navs = NaN; % number of averages + fs = NaN; % sample rate of data + enbw = NaN; % equivalent noise bandwidth + end + + %---------- Private Properties ---------- + properties (GetAccess = protected, SetAccess = protected) + end + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Check property setting % + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + methods + function set.t0(obj, val) + if (~isa(val, 'time') && ~ischar(val) && ~isnumeric(val))|| isempty(val) + error('### The value for the property ''t0'' must be a string, a number or a time object'); + end + if ischar(val) || isnumeric(val) + obj.t0 = time(val); + else + obj.t0 = val; + end + end + function set.navs(obj, val) + if ~isnumeric(val) || isempty(val) || length(val) < 0 || (~isnan(val) && rem(val,1)~=0) + error('### The value for the property ''navs'' must be a positive integer'); + end + obj.navs = val; + end + function set.fs(obj, val) + if ~isempty(val) + if ~isnumeric(val) || ~isreal(val) || val < 0 + error('### The value for the property ''fs'' must be a real positive number'); + end + end + obj.fs = val; + end + function set.enbw(obj, val) + if ~isnumeric(val) || ~isreal(val) || any(val < 0) + error('### The value for the property ''enbw'' must be a real positive number or a vector'); + end + if ~isempty(val) && ~isempty(obj.y) + if length(val) ~=1 && (length(val) ~= length(obj.y)) + error('### The ENBW can only be a single number, of a vector the same length as the y data.'); + end + end + if size(val, 1) == 1 + obj.enbw = val.'; + else + obj.enbw = val; + end + end + end + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Constructor % + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + methods + function obj = fsdata(varargin) + + switch nargin + case 0 + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %%%%%%%%%%%%%%%%%%%%%%%%%%% no inputs %%%%%%%%%%%%%%%%%%%%%%%%%%% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + case 1 + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %%%%%%%%%%%%%%%%%%%%%%%%%%% one input %%%%%%%%%%%%%%%%%%%%%%%%%%% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + if isa(varargin{1}, 'fsdata') + %%%%%%%%%% data = fsdata(fsdata-object) %%%%%%%%%% + %----------- Copy fsdata Object + obj = copy(varargin{1}, 1); + + elseif isstruct(varargin{1}) + %%%%%%%%%% data = fsdata(struct) %%%%%%%%%% + obj = fromStruct(obj, varargin{1}); + + elseif isnumeric(varargin{1}) + %%%%%%%%%% data = fsdata(y-vector) %%%%%%%%%% + %----------- y vector + obj.setY(varargin{1}); + obj.setFs(1); + obj.setX(fsdata.getFfromYFs(length(obj.y), obj.fs)); + + else + error('### Unknown single argument constructor.'); + end + case 2 + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %%%%%%%%%%%%%%%%%%%%%%%%%%% two input %%%%%%%%%%%%%%%%%%%%%%%%%%% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + if isa(varargin{1}, 'org.apache.xerces.dom.DeferredElementImpl') && ... + isa(varargin{2}, 'history') + %%%%%%%%%% obj = fsdata(DOM node, history-objects) %%%%%%%%%% + obj = fromDom(obj, varargin{1}, varargin{2}); + + elseif numel(varargin{1}) > numel(varargin{2}) && numel(varargin{2}) == 1 + %%%%%%%%%% data = fsdata(y-vector, fs) %%%%%%%%%% + % fsdata(y,fs) + obj.setY(varargin{1}); + obj.setFs(varargin{2}); + obj.setX(fsdata.getFfromYFs(length(obj.y), obj.fs)); + + elseif numel(varargin{1}) == numel(varargin{2}) + %%%%%%%%%% data = fsdata(x-vector, y-vector) %%%%%%%%%% + % fsdata(x,y) + obj.setXY(varargin{1}, varargin{2}); + + else + error('### Unknown two argument constructor.'); + end + case 3 + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %%%%%%%%%%%%%%%%%%%%%%%%%% three input %%%%%%%%%%%%%%%%%%%%%%%%%% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + if numel(varargin{1}) == numel(varargin{2}) && numel(varargin{3}) == 1 + %%%%%%%%%% data = fsdata(x-vector, y-vector, fs) %%%%%%%%%% + % fsdata(x,y,fs) + obj.setXY(varargin{1}, varargin{2}); + obj.setFs(varargin{3}); + + else + error('### Unknown three argument constructor.'); + end + otherwise + error('### Unknown number of constructor arguments.'); + end + end % End constructor + end % End public methods + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Methods (Public, hidden) % + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + methods (Hidden = true) + varargout = attachToDom(varargin) + end + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Methods (protected) % + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + methods (Access = protected) + varargout = fromStruct(varargin) + varargout = fromDom(varargin) + end + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Methods (private) % + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + methods (Access = private) + end + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Methods (static) % + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + methods (Static) + + function out = VEROUT() + out = '$Id: fsdata.m,v 1.62 2011/03/30 13:17:33 mauro Exp $'; + end + + function ii = getInfo(varargin) + ii = utils.helper.generic_getInfo(varargin{:}, 'fsdata'); + end + + function out = SETS() + out = {'Default'}; + end + + function out = getDefaultPlist(set) + switch lower(set) + case 'default' + out = plist(); + otherwise + error('### Unknown set [%s]', set'); + end + end + + function obj = initObjectWithSize(n,m) + obj = fsdata.newarray([n m]); + end + + end % End static methods + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Methods (static, private) % + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + methods (Static, Access = private) + f = getFfromYFs(N,fs) + end % End static, private methods + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Methods (static, hidden) % + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + methods (Static = true, Hidden = true) + varargout = loadobj(varargin) + varargout = update_struct(varargin); + end + +end % End classdef