diff m-toolbox/classes/@specwin/get_window.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/get_window.m	Wed Nov 23 19:22:13 2011 +0100
@@ -0,0 +1,75 @@
+% GET_WINDOW returns the required window function as a structure.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% DESCRIPTION: GET_WINDOW returns the required window function as a structure.
+%
+% CALL:        objs = get_window(objs, name, N);             % For standard windows
+%              objs = get_window(objs, name, N, PSLL);       % For Kaiser windows
+%              objs = get_window(objs, name, N, levelCoeff); % For levelled-Hann windows 
+%
+% VERSION:     $Id: get_window.m,v 1.8 2011/05/24 16:05:05 mauro Exp $
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+function w = get_window(varargin)
+
+  PSLL = [];
+
+  % Check inputs
+  n_args = nargin;
+  if n_args > 4 || n_args < 3
+    error('### Incorrect inputs.');
+  end
+  
+  % Get inputs
+  w    = varargin{1};
+  name = varargin{2};
+  N    = varargin{3};
+  if n_args == 4
+    PSLL = varargin{4};
+  end
+
+  % Get window
+  if isempty(PSLL)
+    
+    % Check for 'Kaiser' window
+    if strcmpi(name, 'Kaiser')
+      error('### The ''Kaiser'' window needed the length of the window and PSLL as an input');
+    end
+    
+    % Check for 'levelledHanning' window
+    if strcmpi(name, 'levelledHanning')
+      error('### The ''levelledHanning'' window needed the levelling coefficient as an input');
+    end
+    
+    % get standard window
+    
+    win_name = sprintf('win_%s', lower(name));
+    try
+      w = feval(win_name, w, 'define', N);
+    catch ME
+      if strcmp(ME.identifier, 'MATLAB:UndefinedFunction')
+        error('\n### Your window [%s] is not a supported window.\n### Please type >> specwin.getTypes to see all supported windows.', name);
+      else
+        rethrow(ME);
+      end
+    end
+
+  else
+
+    if strcmpi(name, 'Kaiser')
+      % Deal with Kaiser
+      win_name = sprintf('win_%s', lower(name));
+      w = feval(win_name, w, 'define', N, PSLL);
+    elseif strcmpi(name, 'levelledHanning')
+      % Deal with levelledHann window
+      win_name = sprintf('win_%s', lower(name));
+      levelCoef = PSLL;
+      w = feval(win_name, w, 'define', N, levelCoef);
+    else
+      error('\n### Your window [%s] is not a supported 2-inputs window.\n### Please type >> specwin.getTypes to see all supported windows.', name);
+    end
+    
+  end
+end
+