我想计算在键盘上(即在按下的键上)打字的加速度。我正在使用以下方法计算加速度:
def acceleration(x, y, timestamps):
touch_length = (x.diff() ** 2).add(y.diff() ** 2) ** (0.5)
touch_length = list(accumulate(touch_length.iloc[1:]))
time_diff = timestamps.iloc[1:].reset_index(drop=True)
spl = InterpolatedUnivariateSpline(time_diff, touch_length, k=3).derivative(n=2) # Second derivative
pred = np.abs(spl(time_diff))
pred = pred[::-1]
return pred
该方法的输入是(x,y)位置以及作为熊猫系列的被按下键的时间戳。
我现在看到的是,当我添加更多值InterpolatedUnivariateSpline
时会返回不同的结果,这意味着我要应用多少个值InterpolatedUnivariateSpline
似乎很重要。真的吗?如果是,那么输入应该多大?
例如,当我对5个值(即x,y和长度均为5的时间戳)应用InterpolatedUnivariateSpline时,与对10个值应用InterpolatedUnivariateSpline
时相比,前三个值的预测加速度有所不同。 / p>
第二,当我在timestamps数组中有很大的差距(归因于打字中的长时间停顿)时,这会影响InterpolatedUnivariateSpline
中的所有预测加速度还是仅影响此长时间停顿期间预测的加速度?