计算加速度给定速度
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 我明白你的所作所为,我有点困惑,因为在这里你将加速度输出为一个标量,而它是一个向量。以上是关于计算加速度给定速度的主要内容,如果未能解决你的问题,请参考以下文章