Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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
基于Wikipedia方程的Java多边化实现_Java_Algorithm_Position_Implementation_Indoor Positioning System - Fatal编程技术网

基于Wikipedia方程的Java多边化实现

基于Wikipedia方程的Java多边化实现,java,algorithm,position,implementation,indoor-positioning-system,Java,Algorithm,Position,Implementation,Indoor Positioning System,我正试图用java编写一个多边化算法,以便在我正在进行的一个项目中对其进行测试,但遇到了一些问题。我遵循维基百科页面上的算法(EQN7),但当我尝试时,我得到了错误的答案 这是我正在尝试的数据 double[] truth = new double[] {1, 4, 8}; double[][] sensorLocations = new double[][] { {0, 0, 0}, {1, 15, 8}, {13, 4, 8},

我正试图用java编写一个多边化算法,以便在我正在进行的一个项目中对其进行测试,但遇到了一些问题。我遵循维基百科页面上的算法(EQN7),但当我尝试时,我得到了错误的答案

这是我正在尝试的数据

double[] truth = new double[] {1, 4, 8};
double[][] sensorLocations = new double[][] {
        {0, 0, 0},
        {1, 15, 8},
        {13, 4, 8},
        {1, 4, 20}          
};
double[] timeDelays = new double[] {9, 11, 
            12, 12 };
注意对于时间延迟,为了简单起见,我假设v=1来给出答案。因为我这样做了,所以我制造了一些时间延迟并定位传感器,知道延迟(因为v=1)与距离(sqrt(deltax^2+deltay^2+deltaz^2))相同

然而,当我通过我的算法运行它时,我得到x=0.1064,y=4.2419,z=8.5968。我知道这不可能是一个解决方案,因为与点的距离与时间不匹配

这是我的java算法(为了简化算法的第一部分,我假设最近/最小的时间是第一个点)

公共双[]计算位置(双[]传感器,双[]延时)
{
双[]位置=新双[3];
//计算飞机。。。
双v=1;
双vt1=v*时间延迟[0];
double[]a=新的double[timeDelays.length-1];
double[]b=新的double[timeDelays.length-1];
double[]c=新的double[timeDelays.length-1];
double[]d=新的double[timeDelays.length-1];
对于(int m=1;m
有人能帮我找到算法实现的问题,我用来测试它的数据,或者我所做的任何假设吗?
谢谢

以下任何具体原因:

double[] a = new double[timeDelays.length - 1];
double[] b = new double[timeDelays.length - 1];
double[] c = new double[timeDelays.length - 1];
double[] d = new double[timeDelays.length - 1];

因为下面您正在访问第三个元素,当
时间延迟的长度为3时,这将溢出。

以下任何特定原因:

double[] a = new double[timeDelays.length - 1];
double[] b = new double[timeDelays.length - 1];
double[] c = new double[timeDelays.length - 1];
double[] d = new double[timeDelays.length - 1];
因为下面您正在访问第三个元素,当
timeDelays
的长度为3时,这将溢出