NMSIS-DSP  Version 1.3.1
NMSIS DSP Software Library
Dynamic Time Warping Distance

Dynamic Time Warping Distance. More...

Functions

RISCV_DSP_ATTRIBUTE riscv_status riscv_dtw_distance_f32 (const riscv_matrix_instance_f32 *pDistance, const riscv_matrix_instance_q7 *pWindow, riscv_matrix_instance_f32 *pDTW, float32_t *distance)
 Dynamic Time Warping distance. More...
 
RISCV_DSP_ATTRIBUTE riscv_status riscv_dtw_init_window_q7 (const riscv_dtw_window windowType, const int32_t windowSize, riscv_matrix_instance_q7 *pWindow)
 Window for dynamic time warping computation. More...
 
RISCV_DSP_ATTRIBUTE void riscv_dtw_path_f32 (const riscv_matrix_instance_f32 *pDTW, int16_t *pPath, uint32_t *pathLength)
 Mapping between query and template. More...
 

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.

Function Documentation

◆ riscv_dtw_distance_f32()

RISCV_DSP_ATTRIBUTE riscv_status riscv_dtw_distance_f32 ( const riscv_matrix_instance_f32 pDistance,
const riscv_matrix_instance_q7 pWindow,
riscv_matrix_instance_f32 pDTW,
float32_t distance 
)

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
RISCV_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.

◆ riscv_dtw_init_window_q7()

RISCV_DSP_ATTRIBUTE riscv_status riscv_dtw_init_window_q7 ( const riscv_dtw_window  windowType,
const int32_t  windowSize,
riscv_matrix_instance_q7 pWindow 
)

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.

◆ riscv_dtw_path_f32()

RISCV_DSP_ATTRIBUTE void riscv_dtw_path_f32 ( const riscv_matrix_instance_f32 pDTW,
int16_t *  pPath,
uint32_t *  pathLength 
)

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
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.