While it is not absolutely necessary to understand the underpinning of how the package works, it sometimes helpful, especially if you plan to design a plugin to provide addition data manipulation capability. It also helps to provide insight into the meanings of some of the terms that will be used later to describe different classifications of data.
UDFAnalysis works with both time and non-time based data sets. When a set of data is imported into the UDFAnalysis framework it is mapped into data grid. Each data grid is linked to a variable name which is identifies the measurement in all subsequent usage.
Non-time based data sets are mapped into a data grid which for all intents and purposes is a linear array of measurements. The data are mapped into successive grid cells starting at cell 0 and ending at cell N-1 where N the number of data points read in.
Time-based data sets are mapped into a time based grid. The framework provides a general purpose time grid definition which is used to defined the storage array characteristics although this can be overridden. The purpose of the time grid is to allow data with dissimilar time resolutions to be placed in a common format which can be easily manipulated and combined.
The internal time grid begins at the user selected time Tub and contains N cells of width Tc. The cell width is user specified. The number of cells is determined by the user selected end time Tue and is given by:

if fmod((Tue − Tub),Tc) is non-zero and

if it is. The ending time of the last cell in the time grid, Tce is then:

which should contain the user end time to within the grid cell resolution.
There are two selectable methods by which time based data can be mapped into a time grid which are termed BAND and POINT storage. The mapping may expand or compress depending on relationships between the data and grid cell temporal resolutions.
The BAND storage method requires that each data point have a start and stop time associated with it and spreads data over all cells in the grid covered by its duration. Each cell has added to it the time weighted average of the data. (The weighting factor is 1 if the measurement spans the entire cell.) Once all of the data have been stored in the grid, each grid cell is normalized by the accumulated weighting factors of the data stored in it. The BAND storage method preserves natural data gaps in the data. If you select the BAND method for data which has only a single time associated with it, it will be changed to POINT at the time of storage.
The POINT storage method can be used both with data sets which are have only a single associated time per value or with data sets in which each value has an associated start and stop time. The data are stored in the grid cell which contains the measurement time (using the start time when both the start and stop time are specified for a value. After all of the data have been stored each grid cell is normalized by the number of measurements which were stored in it. Data stored using the POINT method which has a lower time resolution than the storage grid will result in unfilled cells.
The option exists for both storage methods to fill unfilled grid cells by applying a linear interpolation across unfilled cells. This option should always be used when storing data using the POINT method.
All data variables within the UDFAnalysis framework are considered scalars. You can, however, link the scalar variables together to form arrays of variables. There are several methods ways to specify sets of linked variables. The most general way is by using the variable prefix N.M, which expands a variable name to N scalars with the values M, M+1, ... M+N-1 appended to them. The variable 4.5,T is identical to the set of variables T5, T6, T7, and T8. This assumes that the variables T5, T6, T7, and T8 already exist as defined scalar variables.
In addition to the above general prefix there are two additional prefixes that can be used to link variables. The most useful is the vec (vector) prefix which expands a variable name into three scalars with x, y, and z appended to them. The variable vec,V is identical to the set of variables Vx, Vy, and Vz. The ten (tensor) prefix will expand the variable into nine scalars with xx, xy, xz, yx, yy, yz, zx, zy, and zz appended to them.
Setting up linked sets of variables is facilitated by using the VMAP function which allows variable names to be mapped alternate names. If you have the variables A, B, and C which need to be linked as a vector you can use VMAP to link A to Vx, B to Vy, and C to Vz, or alternatively A to V0, B to V1, and C to V2.
The number of linked variables associated with a variable name is its order. A scalar variable has a length or order of 1, vectors variables are of order 3, tensors variables are of order 9 and the variable 12.0,T has an order of 12 while 4.5,T has an order of 4. The individual variables which comprise a linked variable are known as the variable components. These can always be accessed individually and used anywhere that scalars would be.
Manipulation of data within the UDFAnalysis framework is performed by a set of plugins known as FUNCTIONS. Functions are designed to perform specific operations. The use of a plugin architecture for functions to makes it relatively easy to add new ones. Plugins add to the versatility of the package.
Functions operate on variables either cell by cell or on the grid as a whole. The former are generally arithmetic based functions (eg., adding two variables together) while the latter tend to be analysis based (eg., computing power spectra or fitting data). Results of functions are returned as variables which are available to be used in subsequent function calls.
The following table lists several internal variable definitions.
| Variable | Value | Definition |
| apANS(BaD) | -1.0e51 | Bad Data |
| apANS(BaDU) | 1.0e50 | Out of Limits High |
| apANS(BADL) | -1.0e50 | Out of Limits Low |
The UDFAnalysis package provides a highly customizable set of display options. Multiple plots can be displayed within a single window. Labels can be placed anywhere within a plot and can include the values assigned to variables computed in function calls.