【发布时间】:2017-12-19 09:13:46
【问题描述】:
iBeacon 测距过程(可从 CoreLocation 获得)不能提供 iPhone 与 iBeacon 的平稳运行距离,而是提供了太多的波动值。我也尝试使用加权平均值,但它没有给出预期的结果。我遇到了link,它解释了使用卡尔曼滤波器去除信号中的噪声。我还遇到了一个实现了过滤器的swift framework。我的问题是如何应用卡尔曼滤波器逻辑来获得与 iBeacon 的平滑距离?我目前正在使用下面的代码来计算距离,但我不知道如何对其应用卡尔曼滤波器。
func calculateNewDistance(txCalibratedPower: Int, rssi: Int) -> Double{
if rssi == 0{
return -1
}
let ratio = Double(exactly:rssi)!/Double(txCalibratedPower)
if ratio < 1.0{
return pow(10.0, ratio)
}else{
let accuracy = 0.89976 * pow(ratio, 7.7095) + 0.111
return accuracy
}
}
这里 txCalibratedPower 被传递为 -74
【问题讨论】:
标签: ios swift ibeacon kalman-filter