# Namespace Matrix¶

namespace matrix

Functions

af::array slidingDotProduct(af::array q, af::array t)

Calculates the sliding dot product of the time series ‘q’ against t.

Return
array Returns an array with as many elements as ‘t’ in the first dimension and as many elements as the last dimension of ‘q’ in the last dimension.
Parameters
• q: Array whose first dimension is the length of the query time series and the last dimension is the number of time series to calculate.
• t: Array with the second time series in the first dimension.

void meanStdev(af::array t, af::array &a, long m, af::array &mean, af::array &stdev)

Calculates the moving average and standard deviation of the time series ‘t’.

Parameters
• t: Input time series. Multiple time series.
• a: Auxiliary array to be used in the function calculateDistanceProfile. Use the overloaded method without this parameter.
• m: Window size.
• mean: Output array containing the moving average.
• stdev: Output array containing the moving standard deviation.

void meanStdev(af::array t, long m, af::array &mean, af::array &stdev)

Calculates the moving average and standard deviation of the time series ‘t’.

Parameters
• t: Input time series. Multiple time series.
• m: Window size.
• mean: Output array containing the moving average.
• stdev: Output array containing the moving standard deviation.

af::array generateMask(long m, long batchSize, long batchStart, long tsLength, long nTimeSeries = 1)

Function to generate a band matrix of batchSizeXtsLength with the offset batchStart.

Return
af::array With the resulting band.
Parameters
• m: Subsequence length used to generate a band of m/2 at each side.
• batchSize: Size of the first dimension.
• batchStart: Offset of the band matrix.
• tsLength: Size of the second dimension of the matrix.
• nTimeSeries: Number of time series to generate the mask for.

void calculateDistanceProfile(af::array qt, af::array a, af::array sum_q, af::array sum_q2, af::array mean_t, af::array sigma_t, af::array mask, af::array &distance, af::array &index)

Calculates the distance between ‘q’ and the time series ‘t’, which produced the sliding. Multiple queries can be computed simultaneously in the last dimension of ‘q’.

Parameters
• qt: The sliding dot product of ‘q’ and ‘t’.
• a: Auxiliary array computed using the meanStdev function. This array contains a precomputed fixed value to speed up the distance calculation.
• sum_q: Sum of the values contained in ‘q’.
• sum_q2: Sum of squaring the values contained in ‘q’.
• mean_t: Moving average of ‘t’ using a window size equal to the number of elements in ‘q’.
• sigma_t: Moving standard deviation of ‘t’ using a window size equal to the number of elements in ‘q’.
• mask: Mask band matrix to filter the trivial match of a subsequence with itself.
• distance: Resulting minimal distance.
• index: Position where the minimum is occurring.

void calculateDistanceProfile(af::array qt, af::array a, af::array sum_q, af::array sum_q2, af::array mean_t, af::array sigma_t, af::array &distance, af::array &index)

Calculates the distance between ‘q’ and the time series ‘t’, which produced the sliding. Multiple queries can be computed simultaneously in the last dimension of ‘q’.

Parameters
• qt: The sliding dot product of ‘q’ and ‘t’.
• a: Auxiliary array computed using the meanStdev function. This array contains a precomputed fixed value to speed up the distance calculation.
• sum_q: Sum of the values contained in ‘q’.
• sum_q2: Sum of squaring the values contained in ‘q’.
• mean_t: Moving average of ‘t’ using a window size equal to the number of elements in ‘q’.
• sigma_t: Moving standard deviation of ‘t’ using a window size equal to the number of elements in ‘q’.
• distance: Resulting minimal distance.
• index: Position where the minimum is occurring.

void mass(af::array q, af::array t, af::array a, af::array mean_t, af::array sigma_t, af::array mask, af::array &distance, af::array &index)

Calculates the Mueen distance.

[1] Chin-Chia Michael Yeh, Yan Zhu, Liudmila Ulanova, Nurjahan Begum, Yifei Ding, Hoang Anh Dau, Diego Furtado Silva, Abdullah Mueen, Eamonn Keogh (2016). Matrix Profile I: All Pairs Similarity Joins for Time Series: A Unifying View that Includes Motifs, Discords and Shapelets. IEEE ICDM 2016.

Parameters
• q: Array whose first dimension is the length of the query time series and the last dimension is the number of time series to calculate.
• t: Array with the second time series in the first dimension.
• a: Auxiliary array computed using the meanStdev function. This array contains a precomputed fixed value to speed up the distance calculation.
• mean_t: Moving average of ‘t’ using a window size equal to the number of elements in ‘q’.
• sigma_t: Moving standard deviation of ‘t’ using a window size equal to the number of elements in ‘q’.
• mask: Specifies the elements that should not be considered in the computation.
• distance: Resulting minimal distance.
• index: Position where the minimum is occurring.

void mass(af::array q, af::array t, af::array a, af::array mean_t, af::array sigma_t, af::array &distance, af::array &index)

Calculates the Mueen distance.

Parameters
• q: Array whose first dimension is the length of the query time series and the last dimension is the number of time series to calculate.
• t: Array with the second time series in the first dimension.
• a: Auxiliary array computed using the meanStdev function. This array contains a precomputed fixed value to speed up the distance calculation.
• mean_t: Moving average of ‘t’ using a window size equal to the number of elements in ‘q’.
• sigma_t: Moving standard deviation of ‘t’ using a window size equal to the number of elements in ‘q’.
• distance: Resulting minimal distance.
• index: Position where the minimum is occurring.

void stomp(af::array ta, af::array tb, long m, af::array &profile, af::array &index)

STOMP algorithm to calculate the matrix profile between ‘ta’ and ‘tb’ using a subsequence length of ‘m’.

[1] Yan Zhu, Zachary Zimmerman, Nader Shakibay Senobari, Chin-Chia Michael Yeh, Gareth Funning, Abdullah Mueen, Philip Brisk and Eamonn Keogh (2016). Matrix Profile II: Exploiting a Novel Algorithm and GPUs to break the one Hundred Million Barrier for Time Series Motifs and Joins. IEEE ICDM 2016.

Parameters
• ta: Query time series.
• tb: Reference time series.
• m: Subsequence length.
• profile: The matrix profile, which reflects the distance to the closer element of the subsequence from ‘ta’ in ‘tb’.
• index: The matrix profile index, which points to where the aforementioned minimum is located.

void stomp(af::array t, long m, af::array &profile, af::array &index)

STOMP algorithm to calculate the matrix profile between ‘t’ and itself using a subsequence length of ‘m’. This method filters the trivial matches.

[1] Yan Zhu, Zachary Zimmerman, Nader Shakibay Senobari, Chin-Chia Michael Yeh, Gareth Funning, Abdullah Mueen, Philip Brisk and Eamonn Keogh (2016). Matrix Profile II: Exploiting a Novel Algorithm and GPUs to break the one Hundred Million Barrier for Time Series Motifs and Joins. IEEE ICDM 2016.

Parameters
• t: Query and reference time series.
• m: Subsequence length.
• profile: The matrix profile, which reflects the distance to the closer element of the subsequence from ‘t’ in a different location of itself.
• index: The matrix profile index, which points to where the aforementioned minimum is located.

void findBestNMotifs(af::array profile, af::array index, long m, long n, af::array &motifs, af::array &motifsIndices, af::array &subsequenceIndices, bool selfJoin = false)

This function extracts the best N motifs from a previously calculated matrix profile.

Parameters
• profile: The matrix profile containing the minimum distance of each subsequence.
• index: The matrix profile index containing where each minimum occurs.
• m: Subsequence length value used to calculate the input matrix profile.
• n: Number of motifs to extract.
• motifs: The distance of the best N motifs.
• motifsIndices: The indices of the best N motifs.
• subsequenceIndices: The indices of the query sequences that produced the minimum reported in the motifs output array.
• selfJoin: Indicates whether the input profile comes from a self join operation or not. It determines whether the mirror similar region is included in the output or not.

void findBestNDiscords(af::array profile, af::array index, long m, long n, af::array &discords, af::array &discordsIndices, af::array &subsequenceIndices, bool selfJoin = false)

This function extracts the best N discords from a previously calculated matrix profile.

Parameters
• profile: The matrix profile containing the minimum distance of each subsequence.
• index: The matrix profile index containing where each minimum occurs.
• m: Subsequence length value used to calculate the input matrix profile.
• n: Number of discords to extract.
• discords: The distance of the best N discords.
• discordsIndices: The indices of the best N discords.
• subsequenceIndices: The indices of the query sequences that produced the discords reported in the discords output array.
• selfJoin: Indicates whether the input profile comes from a self join operation or not. It determines whether the mirror similar region is included in the output or not.