Source code for africanus.gps.utils

# -*- coding: utf-8 -*-


import numpy as np


[docs]def abs_diff(x, xp): """ Gets matrix of differences between :math:`D`-dimensional vectors x and xp i.e. .. math:: X_{ij} = |x_i - x_j| Parameters ---------- x : :class:`numpy.ndarray` Array of inputs of shape :code:`(N, D)`. xp : :class:`numpy.ndarray` Array of inputs of shape :code:`(Np, D)`. Returns ------- XX : :class:`numpy.ndarray` Array of differences of shape :code:`(N, Np)`. """ try: N, D = x.shape Np, D = xp.shape except Exception: N = x.size D = 1 Np = xp.size x = np.reshape(x, (N, D)) xp = np.reshape(xp, (Np, D)) xD = np.zeros([D, N, Np]) xpD = np.zeros([D, N, Np]) for i in range(D): xD[i] = np.tile(x[:, i], (Np, 1)).T xpD[i] = np.tile(xp[:, i], (N, 1)) return np.linalg.norm(xD - xpD, axis=0)