# pdMedian: Weighted intrinsic median of HPD matrices In pdSpecEst: An Analysis Toolbox for Hermitian Positive Definite Matrices

## Description

`pdMedian` calculates a weighted intrinsic median of a sample of (d,d)-dimensional HPD matrices based on a Weiszfeld algorithm intrinsic to the chosen metric.In the case of the affine-invariant Riemannian metric as detailed in e.g., \insertCiteB09pdSpecEst[Chapter 6] or \insertCitePFA05pdSpecEst, the intrinsic Weiszfeld algorithm in \insertCiteF09pdSpecEst is used. By default, the unweighted intrinsic median is computed.

## Usage

 `1` ```pdMedian(M, w, metric = "Riemannian", maxit = 1000, reltol) ```

## Arguments

 `M` a (d,d,S)-dimensional array corresponding to a sample of (d,d)-dimensional HPD matrices of size S. `w` an S-dimensional nonnegative weight vector, such that `sum(w) = 1`. `metric` the distance measure, one of `'Riemannian'`, `'logEuclidean'`, `'Cholesky'`, `'Euclidean'` or `'rootEuclidean'`. Defaults to `'Riemannian'`. `maxit` maximum number of iterations in gradient descent algorithm. Defaults to `1000` `reltol` optional tolerance parameter in gradient descent algorithm. Defaults to `1E-10`.

## Note

The function does not check for positive definiteness of the input matrices, and (depending on the specified metric) may fail if matrices are close to being singular.

## References

\insertAllCited

`pdMean`
 ``` 1 2 3 4 5 6 7 8 9 10 11``` ```## Generate random sample of HPD matrices m <- function(){ X <- matrix(complex(real=rnorm(9), imaginary=rnorm(9)), nrow=3) t(Conj(X)) %*% X } M <- replicate(100, m()) ## Generate random weight vector z <- rnorm(100) w <- abs(z)/sum(abs(z)) ## Compute weighted intrinsic (Riemannian) median pdMedian(M, w) ```