changeset 1183:38f0d0ceac3f

issue with window length for savgol
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Fri, 01 Apr 2022 15:39:04 -0400
parents 0e5d37b0b9ff
children f9cf827a73a6
files trafficintelligence/moving.py
diffstat 1 files changed, 9 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/trafficintelligence/moving.py	Fri Apr 01 15:33:22 2022 -0400
+++ b/trafficintelligence/moving.py	Fri Apr 01 15:39:04 2022 -0400
@@ -1564,12 +1564,17 @@
         else:
             return speeds
 
-    def getAccelerations(self, window_length, polyorder, delta=1.0, axis=-1, mode='interp', cval=0.0, speeds = None, nInstantsIgnoredAtEnds = 0):
+    def getAccelerations(self, window_length, polyorder, delta=1.0, axis=-1, mode='interp', cval=0.0, nInstantsIgnoredAtEnds = 0):
         '''Returns the 1-D acceleration from the 1-D speeds
         Caution about previously filtered data'''
-        if speeds is None:
-            speeds = self.getSpeeds(nInstantsIgnoredAtEnds)
-        return savgol_filter(speeds, min(window_length, len(speeds)), polyorder, 1, delta, axis, mode, cval)
+        speeds = self.getSpeeds(nInstantsIgnoredAtEnds)
+        if window_length > len(speeds):
+            wlength = min(window_length, len(speeds))
+            if wlength % 2 == 0:
+                wlength -=1
+        else:
+            wlength = window_length
+        return savgol_filter(speeds, wlength, polyorder, 1, delta, axis, mode, cval)
 
     def getSpeedIndicator(self):
         from indicators import SeverityIndicator