要求一:rssi的測量值由對數路徑損耗模型產生,為減小波動造成的誤差,其值可由多次測量取平均值來得到。
1.rssi定位原理
利用已知發射訊號強度和接收節點收到的訊號強度,計算在傳輸過程的損耗,使用訊號模型將損耗轉化為待定位目標與已知節點之間的距離。
2.採用最小二乘法,估計路徑損耗,接收功率裡面的兩個位置引數
3.採用toallop演算法計算未知節點座標
toallop:
function theta=toallop(a,p,j)
[m,~]=size(a)
; k=sum(a.^2,2)
;k1=k(
[1:j-1,j+1:m]
,:);
%取出j行
a1=a(
[1:j-1,j+1:m]
,:);
%取出j行
a2=a1-ones(m-1,1)
*a(j,:)
; p1=p(
[1:j-1,j+1:m]
,:);
%取出j行
p2=p(j)
.^2*ones(m-1,1)
-p1.^2-
(k(j)
*ones(m-1,1)
-k1)
; theta=1/2*inv(a2'*a2)*a2'
*p2;
%利用最小二乘解,得
theta=theta';
%轉換為(x,y)形式
parameter_est:
function
[pd0_est,n_est]=parameter_est(a,sigma)
[m,~]=size(a)
; pd0=0;
n=3;
d=zeros(m,m)
; tt=5;
sigma1=10^(sigma/10)
; h1=;
g1=;
for i=1:m
for j=1:m
if i~=j
d(i,j)=norm(a(i,:)
-a(j,:));
for k=1:tt
prd(k)=pd0-10*n*log10(d(i,j)
)-sigma1*randn;
end
rssi=mean(prd)
; d_distance=-10*log10(d(i,j));
h1=[h1;rssi]
; g1=[g1;d_distance]
;end
endend
h=h1;
[m1,~]=size(h)
; g=[ones(m1,1),g1]
;x=inv(g'*g)*g'
*h;
pd0_est=x(1,1)
;n_est=x(2,1)
;end
主函式:
由上圖所示,橫座標表示的rssi的標準偏差、縱座標表示的是均方根誤差。藍色表示的是理想情況,紅色代表的是實際情況。
1.當rssi較小時,理想情況與實際情況的rmse相差不大,近似一致。2.隨著rssi的增大,理想情況與實際情況開始出現差距,並且差距開始變大。
3.隨著tt(錨節點的個數)的增加,在rssi一定的情況下,理想情況與實際情況的rmse值均減小,也就是說,隨著錨節點的個數的增加,定位精度也隨之增加。
matlab實現RSSI指紋定位
要求一 rssi的測量值由對數路徑損耗模型產生,為減小波動造成的誤差,其值可由多次測量取平均值來得到。要求二 定位指紋資料庫的建立是基於網格形式產生不同的指紋節點。要求三 比較knn演算法與wknn演算法的cdf曲線對比圖,橫座標為定位誤差,縱座標為cdf。每30公尺定位一次 取5次rssi值平均一...
rssi定位相關
無線感測器網路中的定位有很多方法方式,我們目前所用到的是經典的三邊測距法,要想利用該方法,必須先測出節點之間的距離,如何測量節點之間的距離,有很多種方法,但是目前用到最多的還是rssi轉距離的經驗公式,大多數 目前在感測器網路測距定位的研究上只是用到 的方式,很少有實際測量的經驗論述 由於rssi轉...
基於PSO演算法的Rssi測距定位
一 由rssi定位 平面 建立模型 matlab作圖如下 附 node num為錨節點數,node i x,node i y為各個錨節點座標,zd i 為rssi測量距離 x,y meshgrid 1 0.5 100,1 0.5 100 z 0 for i 1 node num z z sqrt x...