Helper function to convert structure params to variables used by the various routines - also performs checks to ensure that parameters are defined; returns default values if they are not defined. Usage: [tapers,pad,Fs,fpass,err,trialave,params]=getparams(params) Inputs: params: structure with fields tapers, pad, Fs, fpass, err, trialave - optional tapers : precalculated tapers from dpss or in the one of the following forms: (1) A numeric vector [TW K] where TW is the time-bandwidth product and K is the number of tapers to be used (less than or equal to 2TW-1). (2) A numeric vector [W T p] where W is the bandwidth, T is the duration of the data and p is an integer such that 2TW-p tapers are used. In this form there is no default i.e. to specify the bandwidth, you have to specify T and p as well. Note that the units of W and T have to be consistent: if W is in Hz, T must be in seconds and vice versa. Note that these units must also be consistent with the units of params.Fs: W can be in Hz if and only if params.Fs is in Hz. The default is to use form 1 with TW=3 and K=5 pad (padding factor for the FFT) - optional (can take values -1,0,1,2...). -1 corresponds to no padding, 0 corresponds to padding to the next highest power of 2 etc. e.g. For N = 500, if PAD = -1, we do not pad; if PAD = 0, we pad the FFT to 512 points, if pad=1, we pad to 1024 points etc. Defaults to 0. Fs (sampling frequency) - optional. Default 1. fpass (frequency band to be used in the calculation in the form [fmin fmax])- optional. Default all frequencies between 0 and Fs/2 err (error calculation [1 p] - Theoretical error bars; [2 p] - Jackknife error bars [0 p] or 0 - no error bars) - optional. Default 0. trialave (average over trials when 1, don't average when 0) - optional. Default 0 Outputs: The fields listed above as well as the struct params. The fields are used by some routines and the struct is used by others. Though returning both involves overhead, it is a safer, simpler thing to do.
0001 function [tapers,pad,Fs,fpass,err,trialave,params]=getparams(params) 0002 % Helper function to convert structure params to variables used by the 0003 % various routines - also performs checks to ensure that parameters are 0004 % defined; returns default values if they are not defined. 0005 % 0006 % Usage: [tapers,pad,Fs,fpass,err,trialave,params]=getparams(params) 0007 % 0008 % Inputs: 0009 % params: structure with fields tapers, pad, Fs, fpass, err, trialave 0010 % - optional 0011 % tapers : precalculated tapers from dpss or in the one of the following 0012 % forms: 0013 % (1) A numeric vector [TW K] where TW is the 0014 % time-bandwidth product and K is the number of 0015 % tapers to be used (less than or equal to 0016 % 2TW-1). 0017 % (2) A numeric vector [W T p] where W is the 0018 % bandwidth, T is the duration of the data and p 0019 % is an integer such that 2TW-p tapers are used. In 0020 % this form there is no default i.e. to specify 0021 % the bandwidth, you have to specify T and p as 0022 % well. Note that the units of W and T have to be 0023 % consistent: if W is in Hz, T must be in seconds 0024 % and vice versa. Note that these units must also 0025 % be consistent with the units of params.Fs: W can 0026 % be in Hz if and only if params.Fs is in Hz. 0027 % The default is to use form 1 with TW=3 and K=5 0028 % 0029 % pad (padding factor for the FFT) - optional (can take values -1,0,1,2...). 0030 % -1 corresponds to no padding, 0 corresponds to padding 0031 % to the next highest power of 2 etc. 0032 % e.g. For N = 500, if PAD = -1, we do not pad; if PAD = 0, we pad the FFT 0033 % to 512 points, if pad=1, we pad to 1024 points etc. 0034 % Defaults to 0. 0035 % Fs (sampling frequency) - optional. Default 1. 0036 % fpass (frequency band to be used in the calculation in the form 0037 % [fmin fmax])- optional. 0038 % Default all frequencies between 0 and Fs/2 0039 % err (error calculation [1 p] - Theoretical error bars; [2 p] - Jackknife error bars 0040 % [0 p] or 0 - no error bars) - optional. Default 0. 0041 % trialave (average over trials when 1, don't average when 0) - optional. Default 0 0042 % Outputs: 0043 % The fields listed above as well as the struct params. The fields are used 0044 % by some routines and the struct is used by others. Though returning both 0045 % involves overhead, it is a safer, simpler thing to do. 0046 0047 if ~isfield(params,'tapers') || isempty(params.tapers); %If the tapers don't exist 0048 display('tapers unspecified, defaulting to params.tapers=[3 5]'); 0049 params.tapers=[3 5]; 0050 end; 0051 if ~isempty(params) && length(params.tapers)==3 0052 % Compute timebandwidth product 0053 TW = params.tapers(2)*params.tapers(1); 0054 % Compute number of tapers 0055 K = floor(2*TW - params.tapers(3)); 0056 params.tapers = [TW K]; 0057 end 0058 0059 if ~isfield(params,'pad') || isempty(params.pad); 0060 params.pad=0; 0061 end; 0062 if ~isfield(params,'Fs') || isempty(params.Fs); 0063 params.Fs=1; 0064 end; 0065 if ~isfield(params,'fpass') || isempty(params.fpass); 0066 params.fpass=[0 params.Fs/2]; 0067 end; 0068 if ~isfield(params,'err') || isempty(params.err); 0069 params.err=0; 0070 end; 0071 if ~isfield(params,'trialave') || isempty(params.trialave); 0072 params.trialave=0; 0073 end; 0074 0075 tapers=params.tapers; 0076 pad=params.pad; 0077 Fs=params.Fs; 0078 fpass=params.fpass; 0079 err=params.err; 0080 trialave=params.trialave;