天天看點

最小二乘法定位(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具體仿真程式見下面超連結

基于最小二乘法的節點定位算法

由于本文也借鑒了部分同行的資源,但是過了好久都忘記引用了哪一篇,如有雷同請與我聯系