Mercurial > hg > ltpda
view m-toolbox/test/new_ltf_code/ltpda_ltf_plan.m @ 19:69e3d49b4b0c database-connection-manager
Update ltpda_uo.fromRepository
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Mon, 05 Dec 2011 16:20:06 +0100 |
parents | f0afece42f48 |
children |
line wrap: on
line source
function varargout = ltpda_ltf_plan(varargin) % LTPDA_LTF_PLAN computes all input values needed for the LPSD and LTFE % algorithms. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % LTPDA_LTF_PLAN computes all input values needed for the LPSD and LTFE % algorithms. % % Usage: % >> [f, r, b, L, K] = ltpda_ltf_plan(Ndata, fs, olap, bmin, Lmin, Jdes, Kdes) % % Inputs: % Ndata - the length of the time-series to be processed % fs - the sample rate of the time-series to be processed % olap - overlap percentage, usually taken from the window function % bmin - the minimum bin number to be used. This is usually taken % from the window function. % Lmin - The minimum segment length. % Jdes - the desired number of frequencies. % Kdes - The desired number of averages. % % Outputs: % Each output is a vector, one value per frequency: % % f - the frequency % r - frequency resolution (Hz) % b - bin number % L - segment lengths % K - number of averages % % Parameter list: % % The following call returns a parameter list object that contains the % default parameter values: % % >> pl = ltpda_ltf_plan('Params') % % The following call returns a string that contains the routine CVS version: % % >> version = ltpda_ltf_plan('Version') % % The following call returns a string that contains the routine category: % % >> category = ltpda_ltf_plan('Category') % % % REFERENCE: "lpsd revisited: ltf" / S2-AEI-TN-3052 % 2008/02/07 V1.1 % G Heinzel % % % M Hewitson 19-02-08 % % $Id: ltpda_ltf_plan.m,v 1.1 2008/02/19 09:11:32 hewitson Exp $ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % q - a vector of start indices for the segments VERSION = '$Id: ltpda_ltf_plan.m,v 1.1 2008/02/19 09:11:32 hewitson Exp $'; CATEGORY = 'Internal'; %% Check if this is a call for parameters, the CVS version string % or the function category if nargin == 1 && ischar(varargin{1}) in = char(varargin{1}); if strcmp(in, 'Params') varargout{1} = getDefaultPL(); return elseif strcmp(in, 'Version') varargout{1} = VERSION; return elseif strcmp(in, 'Category') varargout{1} = CATEGORY; return end end %% ------ Check inputs ------------------------------------------------ if nargin ~= 7 || nargout ~= 5 help(mfilename) error('### Incorrect usage'); end Ndata = varargin{1}; fs = varargin{2}; olap = varargin{3}; bmin = varargin{4}; Lmin = varargin{5}; Jdes = varargin{6}; Kdes = varargin{7}; %% ------ Set up some variables ------------------------------------------- xov = (1 - olap/100); fmin = fs / Ndata * bmin; fmax = fs/2; fresmin = fs / Ndata; freslim = fresmin * (1+xov*(Kdes-1)); logfact = (Ndata/2)^(1/Jdes) - 1; %% ------ Prepare outputs ------------------------------------------- f = []; r = []; b = []; L = []; K = []; % q = []; %% ------ Loop over frequency ------------------------------------------- fi = fmin; while fi < fmax fres = fi * logfact; if fres <= freslim fres = sqrt(fres*freslim); end if fres < fresmin fres = fresmin; end bin = fi/fres; if bin < bmin bin = bmin; fres = fi/bin; end dftlen = round(fs / fres); if dftlen > Ndata dftlen = Ndata; end if dftlen < Lmin dftlen = Lmin; end nseg = round((Ndata - dftlen) / (xov*dftlen) + 1); if nseg == 1 dftlen = Ndata; end fres = fs / dftlen; bin = fi / fres; % Store outputs f = [f fi]; r = [r fres]; b = [b bin]; L = [L dftlen]; K = [K nseg]; fi = fi + fres; end %% ------ Set outputs ------------------------------------------- varargout{1} = f; varargout{2} = r; varargout{3} = b; varargout{4} = L; varargout{5} = K; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % FUNCTION: getDefaultPL % % DESCRIPTION: Get default params % % HISTORY: 19-02-08 M Hewitson % Creation % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function plo = getDefaultPL() plo = plist('Ndata', 10, ... 'fs', 10, ... 'olap', 50, ... 'bmin', 1, ... 'Lmin', 1e20, ... 'Jdes', 1000, ... 'Kdes', 100 ... ); % END