pyriemann.utils.mean.mean_wasserstein

pyriemann.utils.mean.mean_wasserstein(covmats, tol=0.001, maxiter=50, init=None, sample_weight=None)

Mean of SPD matrices according to the Wasserstein metric.

Wasserstein mean is obtained by an iterative procedure where the update is [1]:

\[\mathbf{K} = \left(\sum_i \left( \mathbf{K} \mathbf{C}_i \mathbf{K} \right)^{1/2} \right)^{1/2}\]

with \(\mathbf{K} = \mathbf{C}^{1/2}\).

Parameters
covmatsndarray, shape (n_matrices, n_channels, n_channels)

Set of SPD matrices.

tolfloat, default=10e-4

The tolerance to stop the gradient descent.

maxiterint, default=50

The maximum number of iterations.

initNone | ndarray, shape (n_channels, n_channels), default=None

A SPD matrix used to initialize the gradient descent. If None the Euclidean mean is used.

sample_weightNone | ndarray, shape (n_matrices,), default=None

Weights for each matrix. If None, it uses equal weights.

Returns
Cndarray, shape (n_channels, n_channels)

Wasserstein mean.

References

1

Geometric Radar Processing based on Frechet distance: Information geometry versus Optimal Transport Theory F. Barbaresco. 12th International Radar Symposium (IRS), October 2011