我希望能够计算核心位置的平均速度。我已经有了当前的速度:
- (void)locationUpdate:(CLLocation *)location {
speedLabel.text = [NSString stringWithFormat:@"%.2f", [location speed]*2.236936284];
而且我希望能够在标签中显示它并用按钮重置它。
我希望它在按下按钮时开始平均,并且每隔5秒更新一次平均值,然后在按下另一个按钮后停止平均。
谢谢!
答案 0 :(得分:0)
As defined:平均值是指数字之和除以n 。也就是说,在处理平均值时,您通常至少有2个或更多个观察值,您希望从中计算平均值。您当前速度的平均值恰好是您当前的速度除以1。我确定这不是你想要的。
您需要问自己平均需要多长时间。五秒钟? 10秒?间隔越短(观察越少),对平均值的显着变化越敏感。
基本上你要做的是将你的观察结果存储在一个可变的集合中,例如NSMutableArray
,然后将它们加起来并用数组的count
属性除以和观察次数。或者,当NSHipster开启great article时,您可以利用valueForKeyPath
:
NSMutableArray *speedObservations = [[NSMutableArray alloc] initWithCapacity:n];
...
CGFloat average = [speedObservations valueForKeyPath:@"@avg.floatValue"];
答案 1 :(得分:0)
嗯。我会这样做。
平均速度是从开始时间到结束时间的距离。当他们开始询问平均速度以及当前日期时,我会记录用户的位置。然后我会定期获取一个新的位置读数并计算从旧位置到新位置的行进距离除以当前位置读数和第一个位置读数之间的经过时间。