2

如果标题含糊不清,我深表歉意,但我并不确切地说明我的情况。我正在为使用 GPS 的 iPhone 编写应用程序。在该didUpdateLocations:方法中,我针对任意大小的变量测试位置的水平精度(我将其设置为 50,因为这似乎是一个很好的起点)。如果水平精度小于 50,则保存该位置并增加一个计数器以指示该位置已成功收集。如果水平精度没有通过测试,定位成功计数器会递减。我一直在尝试提出一个可以调整水平精度测试值的方程式。

这个问题很容易解决,如果你只是使用计数器进行准确性测试,但我希望有一些线性度较低的东西。我希望计数器在某种意义上被加权,以便准确度测试变量首先快速接近零,然后随着接近而减慢。

我有一些类似这样的东西,但是一旦精度测试变量变得太精确以至于 GPS 无法匹配,它就会开始振荡。之后,它只会在值之间跳转,比如 1 和 80 左右。这是它的样子:

int previousCounter = successCounter;

if (location.horizontalAccuracy < accuracy)
{
    // save location...
    successCounter++;
}
else
    successCounter--;

int direction = previousCounter - successCounter;
accuracy = 50 - direction * pow(successCounter, 2);

我一直在摆弄这个东西几个小时,似乎无法得到一些实际的工作,我尝试搜索谷歌,但我不确定要寻找什么。我希望这里有人可以提供帮助。

4

1 回答 1

0

我最终只使用了线性方法,没有方程。我最终可能会加权successCounter增量,只是为了稍微调整一下。最后,线性方法对于我想要实现的目标来说绰绰有余,这是我在使用应用程序进行现场测试后发现的。当我想到它时,这甚至没有真正实现我想要实现的目标,所以这就是我最终使用线性方法的原因。我原本打算让这个算法为 GPS 提供自适应精度,但我意识到它实际上只适用于提供有关当前读数准确度的信息。轻微失败:/

于 2012-10-29T15:26:32.103 回答