GPS位置抖动消除的算法/理论
我正在尝试在Android上编写一个GPS跟踪(类似于慢跑应用),并且GPS位置抖动问题已经引发了它的丑陋头脑。 当精度为FINE且精度在5米以内时,位置抖动为每秒1米。 你如何确定或滤除合法运动中的抖动?
Sporypal等应用显然有一些方法可以滤除这种噪音。
有什么想法吗?
你可以通过低通滤波器来运行位置吗?
订单的东西
x(n) = (1-K)*x(n-1) + K*S(n)
哪里
S是你的噪声样本,x是低通滤波样本。 K是一个介于0和1之间的常量,为了获得最佳性能,您可能需要进行试验。
根据传统知识的建议:
我的伪代码看起来很像C:
float noisy_lat[128], noisy_long[128];
float smoothed_lat[128], smoothed_lon[128];
float lat_delay=0., lon_delay=0.;
float smooth(float in[], float out[], int n, float K, float delay)
{
int i;
for (i=0; i<n; i++) {
*out = *in++ * K + delay * (1-K);
delay = *out++;
}
return delay;
}
loop:
Get new samples of position in noisy_lat and noise_lon
// LPF the noise samples to produce smoother position data
lat_delay = smooth(noisy_lat, smoothed_lat, 128, K, lat_delay);
lon_delay = smooth(noisy_lon, smoothed_lon, 128, K, lon_delay);
// Rinse. Repeat.
go to loop:
简而言之,这是一个简单的具有单采样延迟的反馈积分器。 如果您的输入在所需信号上有低频白噪声,该积分器将随着时间平均输入信号,从而导致噪声分量达到接近零的平均值,并为您提供所需的信号。
它的工作原理取决于信号的噪声程度和滤波器的反馈系数K.正如我之前所说的,你必须在这个值上花费一点时间才能看到哪个值产生最干净,最理想的结果。
链接地址: http://www.djcxy.com/p/57365.html上一篇: algorithm/theory for GPS position jitter removal
下一篇: How to get messages for specific user by FQL or GRAPH API?