java - GPS位置抖动去除算法/理论

标签 java android gps

我正在尝试在 Android 上编写一个 GPS 跟踪(类似于慢跑应用程序),但 GPS 位置抖动问题使它变得丑陋。当精度为 FINE 且精度在 5 米以内时,位置每秒抖动 1-n 米。您如何从合法运动中确定或过滤掉这种抖动?

Sporypal 等应用程序显然有一些方法可以过滤掉这种噪音。

有什么想法吗?

最佳答案

您可以通过低通滤波器运行这些位置吗?

命令的东西

x(n) = (1-K)*x(n-1) + K*S(n)

在哪里

S 是噪声样本,x 是低通滤波样本。 K 是一个介于 0 和 1 之间的常数,您可能必须对其进行试验才能获得最佳性能。

根据 TK 的建议:

我的伪代码看起来非常像 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。正如我之前所说,你必须稍微调整一下这个值,看看哪个值产生最干净、最理想的效果结果。

关于java - GPS位置抖动去除算法/理论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9184418/

相关文章:

java - 删除自定义对象的 ArrayList 中的重复项

Android - 从 LocationClient 获取的位置不支持速度

matlab - Lat/Lng 点到 Minor Arc 段的距离

javascript - 如何在 html5 移动网络应用程序中使用 javascript 编辑 exif GPS 信息

java - Android:清理 AsyncTask

java - 如何在 EJB JPA 中合并两个日期

Java POJO 属性映射

java - 如何使用 Mockito 在 Spring Boot 中模拟被测类的实现方法

android - JSONParser 错误,找不到类。安卓

android - 带有 GoogleSignIn 的 Google API - 错误 401 - 未经授权