天天看点

最小二乘法定位(2)——定位算法+仿真程序

#最小二乘法定位算法(由于作者能力有限,如有不对之处,望广大同行指出)
           

 开学了好久,想着把最小二乘法定位算法结束掉,但是今天我之前花了好多时间排版写公式,后面发现没有保存,真的是欲哭无泪!好了不说怎么多了,我们来继续更新我们的博客~

1 最小二乘法原理

1.1 最小二乘法举例

 最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。

 例如:数据点为红色,使用最小二乘法求得的最佳解蓝色,误差绿色,如下图所示:

最小二乘法定位(2)——定位算法+仿真程序

 某次实验得到了四个数据点(x,y):(1,6)、(2,5)、(3,7)、(4,10)。上图中红色的点,我们希望找出一条和这四个点最匹配的直线 y=B1+B2*X ,即找出在某种“最佳情况”下能够大致符合如下超定线性方程组的 B1 和B2 :

最小二乘法定位(2)——定位算法+仿真程序

 最小二乘法采用的手段是尽量使得等号两边的方差最小,也就是找出这个函数的最小值:

最小二乘法定位(2)——定位算法+仿真程序

 最小值可以对函数S(B1,B2)分别对B1和B2进行求偏导数,然后使他们等于0得到:

最小二乘法定位(2)——定位算法+仿真程序
最小二乘法定位(2)——定位算法+仿真程序

如此就得到了一个只有两个未知数的方程组,很容易就可以解出:

B1=3.5

B2=1.4

也就是说直线 y=3.5+1.4x 是最佳的。

2、定位算法简化模型描述

 已知节点的坐标为A1,A2,A3,A4,A5, A6,已知节点与未知节点(N点)的距离为d1,d2,d3,d4,d5,d6,求解未知节点的坐标。模型如下图所示:

最小二乘法定位(2)——定位算法+仿真程序

2.1、求解思路

1、利用未知数表示观测方程为:

最小二乘法定位(2)——定位算法+仿真程序

 上式未知参数为N点坐标(X,Y),误差项Vi。一般3个未知数用三个方程求解即可,但是在实际项目中di存在误差,如何确定最佳解就是利用最小二乘法估计最优解。

现在误差方程为非线性(二次方程),必须转成一次得到简化形式,才可以使用最小二乘法原理。

2、非线性方程线性化(用到最小二乘法定位(1)中的小知识点)

 前项减后项的方法主要是前n-1项减去第n项得到的结果就是线性化的一个过程。在仿真中计算出节点与未知节点的距离方程。

3、定位算法matlab仿真

3.1 定位算法仿真

 本文的仿真是将网络中1000个节点随机分布在(100010001000)m³区域内,选择4个已知节点,添加噪声D=20m、σ=10%(添加高斯白噪声以模拟误差实际情况)。如图所示为随机分布的1000个节点:

最小二乘法定位(2)——定位算法+仿真程序

 如上图所示选取任意两个未知节点做估计(可以选择小于等于1000个节点),估算出位置坐标。如图所示红色节点为已知节点,蓝色节点为未知节点,绿色圈为估算未知节点的位置。

最小二乘法定位(2)——定位算法+仿真程序

matlab具体仿真程序见下面超链接

基于最小二乘法的节点定位算法

由于本文也借鉴了部分同行的资源,但是过了好久都忘记引用了哪一篇,如有雷同请与我联系