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]