目标C语言 iOS找到核心位置的平均速度



我希望能够计算出核心位置的平均速度。我已经有了当前的速度:

- (void)locationUpdate:(CLLocation *)location {
speedLabel.text = [NSString stringWithFormat:@"%.2f", [location speed]*2.236936284];

我还希望能够在标签中显示它并使用按钮重置它

我希望它开始平均时,按下一个按钮和更新平均约每5秒,然后停止平均后,按下另一个按钮。

谢谢!

定义:平均值是指数的总和除以n。也就是说,当处理平均值时,你通常至少有2个或更多的观察值,你希望从中计算平均值。当前速度的平均值就是,当前速度除以1。我敢肯定这不是你想要的。

你需要问自己你想平均多长时间。5秒?10秒?间隔越短(观察值越少),对显著变化的平均值就越敏感。

基本上你要做的是将你的观察值存储在一个可变的集合中,例如NSMutableArray,然后将它们相加并除以数组的count属性,对应于观察值的数量。或者,正如NSHipster有一篇很棒的文章所述,您可以利用valueForKeyPath:

NSMutableArray *speedObservations = [[NSMutableArray alloc] initWithCapacity:n];
...
CGFloat average = [speedObservations valueForKeyPath:@"@avg.floatValue"];

嗯。我会用不同的方式来做这件事。

平均速度是从开始时间到结束时间的距离。当用户开始询问平均网速时,我会记录下他们的位置以及当前日期。然后,我将定期获得一个新的位置读数,并计算从旧位置到新位置的距离除以当前位置读数和第一个位置读数之间经过的时间。

最新更新