我正试着把一个室内三边化程序装在N个BLE物体上。在我的房间里有任意数量的信标,我的ipad可以把它在里面的位置跟踪到一个亚米的精确程度(我希望)。
我让GIS溢流板上的这个问题 (我也会把这个问题放在哪里)来检查我最初的Trilateration程序。我唯一得到的评论是我来这份报纸
现在,我正试图在我的代码中实现他们的迭代三元数数学。他们的公式如下(很抱歉,我不知道如何提出正确的数学公式):
参照点= Xi,Yi 距离= di 平凡初值= Xe,Ye 距离估计误差=x= di−−((xi−xe )^2 + (yi−ye )^2)
接下来,他们对Xe和Ye的初步估计采用如下的增量:
Xe = Xe + 0.05 Delta x Ye = Ye + 0.05 Delta y
在这个新的德尔塔,他们修改了原来的fi方程如下:
= di−−((xi−xe )^2 + (yi−ye )^2) / di
现在,阅读我编写的代码如下:
public GameObject refPoint1, refPoint2;
public float d = 0.0f;
public float f1 = 0.0f;
public float xe, ye = 0.0f;
public float multiplier = 0.05f;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update ()
{
xe = xe + multiplier * Math.Abs(refPoint1.transform.position.x);
ye = ye + multiplier* Math.Abs(refPoint1.transform.position.y);
d = Vector3.Distance(refPoint1.transform.position, refPoint2.transform.position);
f1 = d - (Mathf.Sqrt((refPoint1.transform.position.x - xe) * (refPoint1.transform.position.x - xe) +
(refPoint1.transform.position.y - ye) * (refPoint1.transform.position.y - ye))) / d;
}在我的统一场景中,我已经将上面的代码放置在我的三个领域中的每一个上两次,这样每个球体都能够引用另外两个球。然而,当我运行这个程序时,我的xe, ye and f1就会继续增长。
我只是想知道我是不是做错了什么,或者误解了我不该做的事情?对此的任何见解都将受到感谢。
发布于 2014-04-12 06:28:05
他们首先用绝对误差来描述该方法(高斯-牛顿)。然后,他们暗示,他们使用相对误差,这是他们称为未知的原因分数误差,做实际的计算,在本文中提出。
表示
gi(x,y)=sqrt(sqr(x-xi)+sqr(y-yi))的绝对值是
di-gi(x,y)的绝对值为相对误差
(di-gi(x,y))/di = 1-gi(x,y)/di在B的公式中,如果将相对误差用作fi,则必须将每一行除以di。
https://stackoverflow.com/questions/23010197
复制相似问题