diff m-toolbox/classes/@specwin/specwin.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/@specwin/specwin.m	Wed Nov 23 19:22:13 2011 +0100
@@ -0,0 +1,303 @@
+% SPECWIN spectral window object class constructor.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% DESCRIPTION: SPECWIN spectral window object class constructor.
+%              Create a spectral window from libSpecWin.
+%
+% SUPERCLASSES: ltpda_nuo < ltpda_obj
+%
+%  SPECWIN CONSTRUCTORS:
+%
+%       w = specwin()                  - creates an empty object
+%       w = specwin(w)                 - copies a specwin object
+%       w = specwin('name')            - creates the specified specwin object
+%       w = specwin('name', N)         - creates a specwin object of a
+%                                        particular type and length.
+%       w = specwin('Kaiser', N, psll) - create a specwin Kaiser window
+%                                        with the prescribed psll.
+%
+% 'name' should be one of the following standard windows:
+%
+%    Rectangular, Welch, Bartlett, Hanning, Hamming,
+%    Nuttall3, Nuttall4, Nuttall3a, Nuttall3b, Nuttall4a
+%    Nuttall4b, Nuttall4c, BH92, SFT3F, SFT3M, FTNI, SFT4F, SFT5F
+%    SFT4M, FTHP, HFT70, FTSRS, SFT5M, HFT90D, HFT95, HFT116D
+%    HFT144D, HFT169D, HFT196D, HFT223D, HFT248D
+%
+% VERSION:     $Id: specwin.m,v 1.80 2011/05/24 16:19:00 mauro Exp $
+%
+% SEE ALSO:    ltpda_obj, ltpda_nuo
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+classdef (Hidden = true) specwin < ltpda_nuo
+  
+  %------------------------------------------------
+  %---------- Private read-only Properties --------
+  %------------------------------------------------
+  properties (SetAccess = private)
+    type        = ''; % name of window object
+    alpha       = []; % alpha parameter for various window functions
+    psll        = []; % peak sidelobe level
+    rov         = []; % recommended overlap
+    nenbw       = []; % normalised equivalent noise bandwidth
+    w3db        = []; % 3 dB bandwidth in bins
+    flatness    = []; % window flatness
+    levelorder  = []; % levelling coefficient
+    skip        = []; % number of bins to skip
+  end
+  
+  properties (SetAccess = public)
+    len         = 0;  % window number of samples
+  end
+  
+  properties (Dependent = true, SetAccess = private, Hidden = true)
+    win         = []; % window samples
+    ws          = 0;  % sum of window values
+    ws2         = 0;  % sum of squares of window values
+  end
+  
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  %                          Check property setting                           %
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  
+  methods
+   function obj = set.win(obj, vals)
+     obj.len = length(vals);
+   end
+   
+   function obj = set.ws(obj, ~)
+   end
+    
+   function obj = set.ws2(obj, ~)
+   end
+
+  end
+  
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  %                          Getters for constant properties                  %
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  
+  methods
+    function win = get.win(obj)
+      win_name = sprintf('win_%s', lower(obj.type));
+      win = feval(win_name, obj, 'build');
+    end % win get method
+    
+    function ws = get.ws(obj)
+      if obj.len ~= 0
+        % In this case, we need to calculate the property 'win' before
+        ws = sum(obj.win);
+      else
+        ws = 0;
+      end
+    end
+    
+    function ws2 = get.ws2(obj)
+      if obj.len ~= 0
+        % In this case, we need to calculate the property 'win' before
+        ws2 = sum(obj.win .* obj.win);
+      else
+        ws2 = 0;
+      end
+    end
+  end
+  
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  %                                Constructor                                %
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  methods
+    function ww = specwin(varargin)
+      
+      import utils.const.*
+      utils.helper.msg(msg.OMNAME, 'running %s/%s', mfilename('class'), mfilename);
+      
+      %%%%%%%%%%   Set dafault values   %%%%%%%%%%
+      
+      switch nargin
+        case 0
+          utils.helper.msg(msg.OPROC1, 'empty constructor');
+
+        case 1
+          if isa(varargin{1}, 'specwin')
+            utils.helper.msg(msg.OPROC1, 'copy constructor');
+            %%%%%%%%%%   spw = specwin(specwin-object)   %%%%%%%%%%
+            % copy existing specwin
+            ww = copy(varargin{1}, 1);
+            
+          elseif isstruct(varargin{1})
+            %%%%%%%%%%   spw = specwin(struct)   %%%%%%%%%%
+            utils.helper.msg(msg.OPROC1, 'constructing from struct');
+            ww = fromStruct(ww, varargin{1});
+            
+          elseif ischar(varargin{1})
+            %%%%%%%%%%   spw = specwin(window-name)   %%%%%%%%%%
+            utils.helper.msg(msg.OPROC1, 'constructing from string');
+            N = find(specwin.getInfo('specwin', 'From Window').plists, 'N');
+            ww = get_window(ww, varargin{1}, N);
+            
+          else
+            error('### Unknown 1 argument constructor for specwin object.')
+          end
+          
+        case 2
+          utils.helper.msg(msg.OPROC1, 'constructing type %s', varargin{1});
+          if ischar(varargin{1})
+            %%%%%%%%%%   spw = specwin('Win_type', N)   %%%%%%%%%%
+            ww = get_window(ww, varargin{1}, varargin{2});
+            
+          elseif isa(varargin{1}, 'org.apache.xerces.dom.DeferredElementImpl') && ...
+                 isa(varargin{2}, 'history')
+            %%%%%%%%%%   obj = specwin(DOM node, history-objects)   %%%%%%%%%%
+            ww = fromDom(ww, varargin{1}, varargin{2});
+            
+          else
+            error('### Unknown 2 argument constructor for specwin object.')
+          end
+          
+        case 3
+          utils.helper.msg(msg.OPROC1, 'constructing type %s', varargin{1});
+          %%%%%%%%%%   spw = specwin('Kaiser', N, psll)                 %%%%%%%%%%
+          %%%%%%%%%%   spw = specwin('levelledHanning', N, levelcoeff)  %%%%%%%%%%
+          ww = get_window(ww, varargin{1}, varargin{2}, varargin{3});
+          
+        otherwise
+          error('### Unknown number of constructor arguments');
+      end % End of constructor
+      
+    end
+    
+  end % End constructor
+  
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  %                          Methods (Static, Public)                         %
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  
+  methods (Static = true)
+    
+    function ww = getTypes()
+      ww = {...
+        'Rectangular', 'Welch', 'Bartlett', 'Hanning', 'Hamming',...
+        'Nuttall3', 'Nuttall4', 'Nuttall3a', 'Nuttall3b', 'Nuttall4a',...
+        'Nuttall4b', 'Nuttall4c', 'BH92', 'SFT3F', 'SFT3M', 'FTNI', 'SFT4F', 'SFT5F',...
+        'SFT4M', 'FTHP', 'HFT70', 'FTSRS', 'SFT5M', 'HFT90D', 'HFT95', 'HFT116D',...
+        'HFT144D', 'HFT169D', 'HFT196D', 'HFT223D', 'HFT248D', ...
+        'Kaiser', ...
+        'levelledHanning'...
+        };
+    end
+    
+    function out = VEROUT()
+      out = '$Id: specwin.m,v 1.80 2011/05/24 16:19:00 mauro Exp $';
+    end
+    
+    function ii = getInfo(varargin)
+      ii = utils.helper.generic_getInfo(varargin{:}, 'specwin');
+    end
+    
+    function out = SETS()
+      out = {'Default', 'From Window'};
+    end
+    
+    function out = getDefaultPlist(set)
+      switch lower(set)
+        case 'default'
+          out = plist();
+        case 'from window'
+          prefs = getappdata(0, 'LTPDApreferences');
+          out = plist('type', char(prefs.getMiscPrefs.getDefaultWindow), 'N', 0);
+        otherwise
+          error('### Unknown set [%s]', set);
+      end
+    end
+    
+    function obj = initObjectWithSize(n,m)
+      obj = specwin.newarray([n m]);
+    end
+    
+  end % End static methods
+  
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  %                          Methods (Static, Private)                        %
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  
+  methods (Static = true, Access = private)
+    
+    varargout = kaiser_alpha(varargin)
+    varargout = kaiser_flatness(varargin)
+    varargout = kaiser_nenbw(varargin)
+    varargout = kaiser_rov(varargin)
+    varargout = kaiser_w3db(varargin)
+    
+  end % End static private methods
+  
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  %                         Methods (static, hidden)                          %
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  
+  methods (Static = true, Hidden = true)
+    varargout = loadobj(varargin)
+    varargout = update_struct(varargin)
+  end
+  
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  %                              Methods (public)                             %
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    
+  methods (Hidden = true)
+    varargout = attachToDom(varargin)
+  end
+  
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  %                              Methods (protected)                          %
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  
+  methods (Access = protected)
+    varargout = fromStruct(obj, obj_struct)
+    varargout = fromDom(varargin)
+
+    varargout = get_window(varargin)
+    varargout = win_bh92(varargin)
+    varargout = win_bartlett(varargin)
+    varargout = win_fthp(varargin)
+    varargout = win_ftni(varargin)
+    varargout = win_ftsrs(varargin)
+    varargout = win_hft116d(varargin)
+    varargout = win_hft144d(varargin)
+    varargout = win_hft169d(varargin)
+    varargout = win_hft196d(varargin)
+    varargout = win_hft223d(varargin)
+    varargout = win_hft248d(varargin)
+    varargout = win_hft70(varargin)
+    varargout = win_hft90d(varargin)
+    varargout = win_hft95(varargin)
+    varargout = win_hamming(varargin)
+    varargout = win_hanning(varargin)
+    varargout = win_nuttall3(varargin)
+    varargout = win_nuttall3a(varargin)
+    varargout = win_nuttall3b(varargin)
+    varargout = win_nuttall4(varargin)
+    varargout = win_nuttall4a(varargin)
+    varargout = win_nuttall4b(varargin)
+    varargout = win_nuttall4c(varargin)
+    varargout = win_rectangular(varargin)
+    varargout = win_sft3f(varargin)
+    varargout = win_sft3m(varargin)
+    varargout = win_sft4f(varargin)
+    varargout = win_sft4m(varargin)
+    varargout = win_sft5f(varargin)
+    varargout = win_sft5m(varargin)
+    varargout = win_welch(varargin)
+    varargout = win_kaiser(varargin)
+    varargout = win_levelledhanning(varargin)
+  end
+  
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  %                              Methods (private)                            %
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  
+  methods (Access = private)
+  end
+  
+end % End classdef
+