基于Wikipedia方程的Java多边化实现
我正试图用java编写一个多边化算法,以便在我正在进行的一个项目中对其进行测试,但遇到了一些问题。我遵循维基百科页面上的算法(EQN7),但当我尝试时,我得到了错误的答案 这是我正在尝试的数据基于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},
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时,这将溢出