Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 自适应精度算法/方程_Ios_Algorithm_Gps - Fatal编程技术网

Ios 自适应精度算法/方程

Ios 自适应精度算法/方程,ios,algorithm,gps,Ios,Algorithm,Gps,如果标题含糊不清,我深表歉意,但我不知道该如何称呼我的处境。我正在为iPhone编写一个使用GPS的应用程序。在didUpdateLocations:方法中,我根据任意大小的变量测试位置的水平精度(我将其设置为50,因为这似乎是一个很好的起点)。如果水平精度小于50,则我保存该位置并增加一个计数器以指示已成功收集该位置。如果水平精度未通过测试,则位置成功计数器将递减。我一直在试图找出一个方程式来调整水平精度测试值 这个问题很容易解决,如果你只是使用计数器进行精度测试,但我希望不是线性的。我希望在

如果标题含糊不清,我深表歉意,但我不知道该如何称呼我的处境。我正在为iPhone编写一个使用GPS的应用程序。在
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);
int previousCounter=成功计数器;
if(位置水平精度<精度)
{
//保存位置。。。
successCounter++;
}
其他的
成功计数器--;
int方向=上一个计数器-成功计数器;
精度=50-方向*功率(成功计数器,2);

我已经摆弄这个东西好几个小时了,似乎找不到实用的东西,我试着搜索谷歌,但我不确定该找什么。我希望这里的人能帮上忙。

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

如果精度太小,则增加一定百分比,如果精度太大,则降低一定百分比。谢谢您的输入。我最终解决了这个问题,没有任何奇特的方程式。我会发布我的解决方案,这样这个东西就可以关闭了。