Mercurial > hg > nsaunier > traffic-intelligence
comparison trafficintelligence/moving.py @ 1197:0475b4cd0cfb
adding simple direct acceleration calculation
| author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
|---|---|
| date | Sun, 31 Jul 2022 16:49:51 +0200 |
| parents | d5566af60a69 |
| children | 7b3384a8e409 |
comparison
equal
deleted
inserted
replaced
| 1196:d5566af60a69 | 1197:0475b4cd0cfb |
|---|---|
| 1559 else: | 1559 else: |
| 1560 print('Object {} has no features loaded.'.format(self.getNum())) | 1560 print('Object {} has no features loaded.'.format(self.getNum())) |
| 1561 return None | 1561 return None |
| 1562 | 1562 |
| 1563 def getSpeeds(self, nInstantsIgnoredAtEnds = 0): | 1563 def getSpeeds(self, nInstantsIgnoredAtEnds = 0): |
| 1564 '''Returns the scalar speed''' | |
| 1564 speeds = self.getVelocities().norm() | 1565 speeds = self.getVelocities().norm() |
| 1565 if nInstantsIgnoredAtEnds > 0: | 1566 if nInstantsIgnoredAtEnds > 0: |
| 1566 n = min(nInstantsIgnoredAtEnds, int(floor(self.length()/2.))) | 1567 n = min(nInstantsIgnoredAtEnds, int(floor(self.length()/2.))) |
| 1567 return speeds[n:-n] | 1568 return speeds[n:-n] |
| 1568 else: | 1569 else: |
| 1569 return speeds | 1570 return speeds |
| 1570 | 1571 |
| 1572 def getAccelerations(self, fromSpeeds = True, nInstantsIgnoredAtEnds = 0): | |
| 1573 '''Returns the scalar acceleration by differentiating the speeds (fromSpeeds = True) or by differentiating the velocity (vector) and taking the norm (frompSpeeds = False. In the second case, speed is always positive''' | |
| 1574 if fromSpeeds: | |
| 1575 speeds = array(self.getSpeeds()) | |
| 1576 accelerations = speeds[1:]-speeds[:-1] | |
| 1577 else: | |
| 1578 accelerations = self.getVelocities().differentiate().norm() | |
| 1579 if nInstantsIgnoredAtEnds > 0: | |
| 1580 n = min(nInstantsIgnoredAtEnds, int(floor(len(accelerations)/2.))) | |
| 1581 return accelerations[n:-n] | |
| 1582 else: | |
| 1583 return accelerations | |
| 1584 | |
| 1571 def getAccelerationsSG(self, window_length, polyorder, delta=1.0, axis=-1, mode='nearest', cval=0.0, nInstantsIgnoredAtEnds = 0): | 1585 def getAccelerationsSG(self, window_length, polyorder, delta=1.0, axis=-1, mode='nearest', cval=0.0, nInstantsIgnoredAtEnds = 0): |
| 1572 '''Returns the 1-D acceleration from the 1-D speeds | 1586 '''Returns the 1-D acceleration from the 1-D speeds |
| 1573 Caution about previously filtered data''' | 1587 Caution about previously filtered data''' |
| 1574 speeds = self.getSpeeds() | 1588 speeds = self.getSpeeds() |
| 1575 wlength = min(window_length, len(speeds)) | 1589 wlength = min(window_length, len(speeds)) |
