如何计算GPS的移动平均速度?

b_m*_*b_m 1 gps android

我正在使用GPS开发一个Android应用程序.我想实现一个功能,显示用户在1/5/15分钟内的平均速度.类似于unix上的CPU负载.我可以通过累计逐秒计算的距离并将其除以经过的时间来轻松计算平均值,但我想不出计算移动平均线的聪明方法.

显然,我可以通过每秒将最后一个位置和当前位置之间的距离放在一个数组中,同时删除最旧的值来完成id.

我正在寻找一种巧妙的方法.

ctc*_*rry 5

这是一个非常直接的方法:

如果您每秒采样位置,请在队列中保留901个样本,即15分钟(和1个额外).位置0是最近的测量值,实际上是您当前的位置.

对于过去X分钟的平均速度:

s = X * 60;
point1 = postion_queue[0]; // this is your current position
point2 = postion_queue[s]; // this is your position s seconds ago
d = distance_between_points(point1, point2);
speed = d / s;
Run Code Online (Sandbox Code Playgroud)

speed现在是每秒的距离单位,换算成英里/小时,或者每小时你需要的单位.X的不同值可用于1至15分钟之间的任何平均值.