Source code for monalisa.trajectory._traj_line_direction
"""Port of src/traj123/bmTraj_lineDirection.m."""
import numpy as np
from monalisa._mat import msize, squeeze
[docs]
def traj_line_direction(t):
"""Unit direction of each line of a trajectory in line format ``[imDim, N, nLine]``."""
t = np.asarray(t)
imDim, N, nLine = msize(t, 1), msize(t, 2), msize(t, 3)
t = np.reshape(t, (imDim, N, nLine), order="F")
e = t - t[:, 0:1, :]
e = e[:, int(np.ceil(N / 2)) - 1 :, :]
e_norm = np.zeros((1, e.shape[1], e.shape[2]), dtype=e.dtype)
for i in range(imDim):
e_norm = e_norm + e[i : i + 1, :, :] ** 2
e = e / np.sqrt(e_norm)
return squeeze(np.mean(e, axis=1, keepdims=True))