From c7cb3297928c0758b01196f1d7f187fb5773ab0c Mon Sep 17 00:00:00 2001 From: mayitzin Date: Wed, 6 Sep 2023 16:06:37 +0200 Subject: [PATCH] Return empty array if nan_intervals not found. SLERP_NaN() returns same array if no NaNs are found. --- ahrs/common/quaternion.py | 4 ++++ ahrs/utils/core.py | 2 ++ 2 files changed, 6 insertions(+) diff --git a/ahrs/common/quaternion.py b/ahrs/common/quaternion.py index 6806723..9edf5bb 100644 --- a/ahrs/common/quaternion.py +++ b/ahrs/common/quaternion.py @@ -3011,6 +3011,10 @@ def slerp_nan(self, inplace: bool = True) -> np.ndarray: self.remove_jumps() interpolated_quaternions = np.copy(self.array) nan_intervals = get_nan_intervals(self.array) + if len(nan_intervals) == 0: + if inplace: + return None + return interpolated_quaternions for interval in nan_intervals: interpolated_quaternions[interval[0]:interval[1]+1] = slerp( self.array[interval[0]-1], diff --git a/ahrs/utils/core.py b/ahrs/utils/core.py index 2931a60..0fb2060 100644 --- a/ahrs/utils/core.py +++ b/ahrs/utils/core.py @@ -67,4 +67,6 @@ def get_nan_intervals(data: np.ndarray) -> list: isnan_list = np.any(np.isnan(data), axis=1) if data.ndim > 1 else np.isnan(data) nan_indices = np.where(isnan_list == True)[0] intervals = np.split(nan_indices, np.where(np.diff(nan_indices) > 1)[0] + 1) + if len(intervals) == 0: + return [] return [(interval[0], interval[-1]) for interval in intervals]