计算加速度给定速度

Posted

技术标签:

【中文标题】计算加速度给定速度【英文标题】:calculate acceleration given speed 【发布时间】:2018-04-20 19:10:25 【问题描述】:

对不起,如果这看起来是一个愚蠢的问题, 我有一个看起来像这样的数据集

type    time    latitude    longitude   altitude (m)    speed (km/h)    name    desc    currentdistance timeelapsed
T   2017-10-07 10:44:48 28.750766667    77.088805000    783.5   0.0 2017-10-07_10-44-48     0.0 00:00:00
T   2017-10-07 10:44:58 28.752345000    77.087840000    853.5   7.8         198.70532   00:00:10
T   2017-10-07 10:45:00 28.752501667    77.087705000    854.5   7.7         220.53915   00:00:12

我不确定如何解决这个问题,计算加速度需要考虑速度和时间的差异,有什么建议可以尝试吗?

提前致谢

【问题讨论】:

你想要加速formola? 我已经在问题中发布了论坛,问题是当我尝试获取时间差时,我得到的时间差不能被解释为整数,所以我有点在寻找我可以尝试的方法 您应该将数据转换为标准数据时间格式。 (因为你的数据是human_readble 格式) 加速 = (vEnd - vStart) / 时间。您的第一个计算时间为 58 - 48 = 10 秒,vEnd = 853.5 vStart = 783,5 将时间转换为秒 【参考方案1】:

假设您的数据是从 CSV 加载的,如下所示:

type,time,latitude,longitude,altitude (m),speed (km/h),name,desc,currentdistance,timeelapsed
T,2017-10-07 10:44:48,28.750766667,77.088805000,783.5,0.0,2017-10-07_10-44-48,,0.0,00:00:00
T,2017-10-07 10:44:58,28.752345000,77.087840000,853.5,7.8,,,198.70532,00:00:10
T,2017-10-07 10:45:00,28.752501667,77.087705000,854.5,7.7,,,220.53915,00:00:12

time 列转换为datetime 对象,timeelapsed 列转换为秒。从这里你可以添加一个acceleration 列 计算每行之间speed (km/h) 的差异并除以每行之间time 的差异,如下所示:

from datetime import datetime    
import pandas as pd
import numpy as np

df = pd.read_csv('input.csv', parse_dates=['time'], dtype='name':str, 'desc':str)
df['timeelapsed'] = (pd.to_datetime(df['timeelapsed'], format='%H:%M:%S') - datetime(1900, 1, 1)).dt.total_seconds()
df['acceleration'] = (df['speed (km/h)'] - df['speed (km/h)'].shift(1)) / (df['timeelapsed'] - df['timeelapsed'].shift(1))

print df

给你:

  type                time   latitude  longitude  altitude (m)  speed (km/h)                 name desc  currentdistance  timeelapsed  acceleration
0    T 2017-10-07 10:44:48  28.750767  77.088805         783.5           0.0  2017-10-07_10-44-48  NaN          0.00000          0.0           NaN
1    T 2017-10-07 10:44:58  28.752345  77.087840         853.5           7.8                  NaN  NaN        198.70532         10.0          0.78
2    T 2017-10-07 10:45:00  28.752502  77.087705         854.5           7.7                  NaN  NaN        220.53915         12.0         -0.05

【讨论】:

非常感谢。 @Ryan 我明白你的所作所为,我有点困惑,因为在这里你将加速度输出为一个标量,而它是一个向量。

以上是关于计算加速度给定速度的主要内容,如果未能解决你的问题,请参考以下文章

根据速度和网格计算减速度

如何计算给定波的频率和时间

加速度计的速度

给定加速度数据和相应的时间,如何在 MATLAB 中找到位置和速度?

优化给定的 sql 查询以提高速度

使用 RNN/LSTM 检测速度变化(给定当前 xy 位置)