matlab實現RSSI定位

2021-10-07 18:31:38 字數 3536 閱讀 5307

要求一: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...