diff --git a/movement/kinematics/__init__.py b/movement/kinematics/__init__.py index 7216a367d..415d45d44 100644 --- a/movement/kinematics/__init__.py +++ b/movement/kinematics/__init__.py @@ -33,3 +33,4 @@ "compute_forward_vector_angle", "compute_kinetic_energy", ] +from .trajectory_metrics import trajectory_length, trajectory_variance diff --git a/movement/kinematics/trajectory_metrics.py b/movement/kinematics/trajectory_metrics.py new file mode 100644 index 000000000..6b016dad7 --- /dev/null +++ b/movement/kinematics/trajectory_metrics.py @@ -0,0 +1,9 @@ +import numpy as np + + +def trajectory_length(traj): + return np.sum(np.linalg.norm(np.diff(traj, axis=0), axis=1)) + + +def trajectory_variance(traj): + return np.var(traj, axis=0).sum() diff --git a/tests/test_trajectory_metrics.py b/tests/test_trajectory_metrics.py new file mode 100644 index 000000000..801052d65 --- /dev/null +++ b/tests/test_trajectory_metrics.py @@ -0,0 +1,8 @@ +import numpy as np + +from movement.kinematics.trajectory_metrics import trajectory_length + + +def test_trajectory_length(): + traj = np.array([[0, 0], [3, 4]]) + assert trajectory_length(traj) == 5.0