This is where navigation should be.

LTFATARGHELPER - Parse arguments for LTFAT

Usage

[flags,varargout]  = ltfatarghelper(posdepnames,definput,arglist,callfun);

Input parameters

posdepnames Names of the position dependant parameters.
definput Struct to define the allowed input
arglist Commandline of the calling function (varargin)
callfun Name of calling function (optional)

Output parameters

flags Struct with information about flags.
keyvals Struct with key / values.
varargout The position dependant pars. properly initialized

Description

[flags,keyvals]=ltfatarghelper(posdepnames,definput,arglist) assists in parsing input parameters for a function in LTFAT. Parameters come in four categories:

  • Position dependant parameters. These must not be strings. These are the first parameters passed to a function, and they are really just a short way of specifying key/value pairs. See below.
  • Flags. These are single string appearing after the position dependant parameters.
  • Key/value pairs. The key is always a string followed by the value, which can be anything.
  • Expansions. These appear as flags, that expand into a pre-defined list of parameters. This is a short-hand way of specifying standard sets of flags and key/value pairs.

The parameters are parsed in order, so parameters appearing later in varargin will override previously set values.

The following example for calling ltfatarghelper is taken from dgt:

definput.keyvals.L=[];
definput.flags.phase={'freqinv','timeinv'};
[flags,kv]=ltfatarghelper({'L'},definput,varargin);

The first line defines a key/value pair with the key 'L' having an initial value of [] (the empty matrix).

The second line defines a group of flags by the name of phase. The group phase contains the flags 'freqinv' and 'timeinv', which can both be specified on the command line by the user. The group-name phase is just for internal use, and does not appear to the user. The flag mentioned first in the list will be selected by default, and only one flag in a group can be selected at any time. A group can contain as many flags as desired.

The third line is the actual call to ltfatarghelper which defines the output flags and kv. The input {'L'} indicates that the value of the parameter 'L' can also be given as the very first value in varargin.

The output struct kv contains the key/value pairs, so the value associated to 'L' is stored in kv.L.

The output struct flags contains information about the flags choosen by the user. The value of flags.phase will be set to the selected flag in the group phase and additionally, the value of flags.do_timeinv will be 1 if 'timeinv' was selected and 0 otherwise, and similarly for 'freqinv'. This allows for easy checking of selected flags.

Advanced usage

Expansion import was introduced in order to allow sharing common flags and key/value pairs between functions.

The following example is taken from plotdgt and tfplot:

definput.import={'ltfattranslate','tfplot'};
[flags,kv,fs]=ltfatarghelper({'fs','dynrange'},definput,varargin);

This code instructs ltfatarghelper to run functions arg_ltfattranslate and arg_tfplot which define the flags and the key/value pairs. The arg_ functions must have the following signature:

function definput=arg_name(definput)

Moreover, a special flag 'argimport' is used to pass the flags and the key/value pairs from plotdgt to tfplot:

coef=tfplot(...,'argimport',flags,kv);