Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.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
Java 三边测量WiFI强度信号的3个计算距离_Java_Android_Python_Trilateration - Fatal编程技术网

Java 三边测量WiFI强度信号的3个计算距离

Java 三边测量WiFI强度信号的3个计算距离,java,android,python,trilateration,Java,Android,Python,Trilateration,我使用android扫描WIFI AP的每一帧时间,我从每个AP获得信号强度(RSSI单位为dbm),并使用以下公式计算距离: public double calculateDistance(double levelInDb, double freqInMHz) { double exp = (32.44 - (20 * Math.log10(freqInMHz)) + Math.abs(levelInDb)) / 20.0; return Math.pow(10.0, exp)

我使用android扫描WIFI AP的每一帧时间,我从每个AP获得信号强度(RSSI单位为dbm),并使用以下公式计算距离:

public double calculateDistance(double levelInDb, double freqInMHz) {
    double exp = (32.44 - (20 * Math.log10(freqInMHz)) + Math.abs(levelInDb)) / 20.0;
    return Math.pow(10.0, exp);
}
这很好,所以我有三个或更多的距离,现在我需要在地图上绘制所有AP及其固定位置,我在互联网上进行了一些阅读,发现了三边测量(通过测量距离确定点的绝对或相对位置的过程),但看起来我至少需要一个点(x,y),此时,我只计算了与信号强度的距离,可以作为不同圆周的半径

我很困惑,因为我没有任何具体的点(x,y)来计算手机的位置

我只需要知道是否有方法计算那个点,或者我可以假设那个初始点,或者我遗漏了什么


谢谢你,我真的很感谢你。正如Paulw11提到的,你必须知道所有AP的确切位置,或者至少其中一个AP,以及其他两个AP与此AP的相对位置。然后,三边测量程序将为每个AP生成一个圆圈,并对其进行拦截

请记住,使用Wi-Fi进行三边测量将产生一个区域而不是一个点,这将导致不确定区域的精度至少为2-3m。从我所看到的,你是根据自由空间损耗模型来计算距离的,这是一种通用类型,它不是每个环境的真实情况,因此,这个假设会使你的估计更加糟糕


一个好的方法是,首先使用设备上的Wi-Fi测量值对您所在地区进行无线电地图绘制,然后基于此Wi-Fi指纹。或者先准备一个培训期。这方面有很多教程。

您需要知道AP之间的坐标。然后可以计算此坐标空间中圆的交点