LIBML  Version 3.2.4
LIBML DSP Software Library
Macros | Functions
Dynamic Time Warping Distance
Collaboration diagram for Dynamic Time Warping Distance:

Macros

#define E(MAT, R, C)   (*(MAT + nCols * (R) + (C)))
 Mapping between query and template. More...
 
#define F32_MAX   ((f32_t)__FLT_MAX__)
 

Functions

tpt_status tpt_dtw_init_window_q7 (q7_t *pWindow, const tpt_dtw_window windowType, const int32_t windowSize, uint32_t nRows, uint32_t nCols)
 Window for dynamic time warping computation. More...
 
void tpt_dtw_path_f32 (int16_t *Path, uint32_t *PathLength, const f32_t *pDTW, uint32_t nRows, uint32_t nCols)
 
tpt_status tpt_dtw_distance_f32 (f32_t *pDTW, f32_t *distance, const f32_t *pDistance, const q7_t *pWindow, uint32_t nRows, uint32_t nCols)
 
#define E(MAT, R, C)   (*(MAT + nCols * (R) + (C)))
 Dynamic Time Warping distance. More...
 
#define WIN(R, C)    ((pWindow == NULL) ? 1 : ((*(pWindow + nCols * (R) + (C))) == 1))
 
#define F32_MAX   ((f32_t)__FLT_MAX__)
 

Detailed Description

Dynamic Time Warping Distance.

This is not really a distance since triangular inequality is not respected.

The step pattern used is symmetric2. Future versions of this function will provide more customization options.

Macro Definition Documentation

◆ E [1/2]

#define E (   MAT,
  R,
  C 
)    (*(MAT + nCols * (R) + (C)))

Dynamic Time Warping distance.

Parameters
[in]pDistanceDistance matrix (Query rows * Template columns)
[in]pWindowWindowing matrix (can be NULL if no windowing used)
[out]pDTWTemporary cost buffer (same size)
[out]distanceDistance
Returns
ARM_MATH_ARGUMENT_ERROR in case no path can be found with window constraint
Windowing matrix

The windowing matrix is used to impose some constraints on the search for a path. The algorithm will run faster (smaller search path) but may not be able to find a solution.

The distance matrix must be initialized only where the windowing matrix is containing 1. Thus, use of a window also decreases the number of distances which must be computed.

◆ E [2/2]

#define E (   MAT,
  R,
  C 
)    (*(MAT + nCols * (R) + (C)))

Mapping between query and template.

Parameters
[in]pDTWCost matrix (Query rows * Template columns)
[out]pPathWarping path in cost matrix 2*(nb rows + nb columns)
[out]pathLengthLength of path in number of points
Returns
none
Warping path

The warping path has length which is at most 2*(query length + template length) in float. 2 because it is a list of coordinates : (query index, template index) coordinate.

The buffer pPath must be big enough to contain the warping path.

pathLength is the number of points in the returned path. The resturned path may be smaller than query + template.

◆ F32_MAX [1/2]

#define F32_MAX   ((f32_t)__FLT_MAX__)

◆ F32_MAX [2/2]

#define F32_MAX   ((f32_t)__FLT_MAX__)

◆ WIN

#define WIN (   R,
  C 
)     ((pWindow == NULL) ? 1 : ((*(pWindow + nCols * (R) + (C))) == 1))

Function Documentation

◆ tpt_dtw_distance_f32()

tpt_status tpt_dtw_distance_f32 ( f32_t pDTW,
f32_t distance,
const f32_t pDistance,
const q7_t pWindow,
uint32_t  nRows,
uint32_t  nCols 
)

◆ tpt_dtw_init_window_q7()

tpt_status tpt_dtw_init_window_q7 ( q7_t pWindow,
const tpt_dtw_window  windowType,
const int32_t  windowSize,
uint32_t  nRows,
uint32_t  nCols 
)

Window for dynamic time warping computation.

Parameters
[in]windowTypeType of window
[in]windowSizeWindow size
[in,out]pWindowWindow
Returns
Error if window type not recognized
Windowing matrix
The window matrix will contain 1 for the position which are accepted and 0 for the positions which are rejected.

The input matrix must already contain a buffer and the number of rows (query length) and columns (template length) must be initialized. The function will fill the matrix with 0 and 1.

◆ tpt_dtw_path_f32()

void tpt_dtw_path_f32 ( int16_t *  Path,
uint32_t *  PathLength,
const f32_t pDTW,
uint32_t  nRows,
uint32_t  nCols 
)