edr_cost_matrix

edr_cost_matrix(x: ndarray, y: ndarray, window: float | None = None, epsilon: float | None = None, itakura_max_slope: float | None = None) ndarray[source]

Compute the EDR cost matrix between two time series.

Parameters:
xnp.ndarray

First time series, either univariate, shape (n_timepoints,), or multivariate, shape (n_channels, n_timepoints).

ynp.ndarray

Second time series, either univariate, shape (n_timepoints,), or multivariate, shape (n_channels, n_timepoints).

epsilonfloat, default=None

Matching threshold to determine if two subsequences are considered close enough to be considered ‘common’. If not specified as per the original paper epsilon is set to a quarter of the maximum standard deviation.

itakura_max_slopefloat, default=None

Maximum slope as a proportion of the number of time points used to create Itakura parallelogram on the bounding matrix. Must be between 0. and 1.

Returns:
np.ndarray (n_timepoints, m_timepoints)

EDR cost matrix between x and y.

Raises:
ValueError

If x and y are not 1D or 2D arrays.

Examples

>>> import numpy as np
>>> from aeon.distances import edr_cost_matrix
>>> x = np.array([[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]])
>>> y = np.array([[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]])
>>> edr_cost_matrix(x, y)
array([[0., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 0., 1., 2., 2., 2., 2., 2., 2., 2.],
       [1., 1., 0., 1., 2., 3., 3., 3., 3., 3.],
       [1., 2., 1., 0., 1., 2., 3., 4., 4., 4.],
       [1., 2., 2., 1., 0., 1., 2., 3., 4., 5.],
       [1., 2., 3., 2., 1., 0., 1., 2., 3., 4.],
       [1., 2., 3., 3., 2., 1., 0., 1., 2., 3.],
       [1., 2., 3., 4., 3., 2., 1., 0., 1., 2.],
       [1., 2., 3., 4., 4., 3., 2., 1., 0., 1.],
       [1., 2., 3., 4., 5., 4., 3., 2., 1., 0.]])