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