日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于MATLAB的RSSI定位算法仿真

發布時間:2025/4/5 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于MATLAB的RSSI定位算法仿真 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

clc;
clear,close all;
BorderHeight=1000;%區域長度
BorderWidth=[10,8,5,3];%區域寬度
BeanconAmountA=51;%信標節點數量
Dis=BorderHeight/(BeanconAmountA-1); %信標節點間的距離
R=50;%節點的通信距離
BigBeacon=3;%選取的信號強度最大的節點數目
LoopNum=100;%試驗重復次數
SBeta=3;

for x=1:4
? ? gl1=0;
? ? gl2=0;
? ? gl3=0;
? ? gl4=0;
? ? for m=1:LoopNum
? ? ? ? m
? ? ? ?%生成移動節點坐標
? ? ? ?Dx=BorderHeight.*rand(1,1);
? ? ? ?Dy=BorderWidth(x).*rand(1,1);
? ? ? ?UN=[Dx,Dy];
? ? ? ?for j=1:BeanconAmountA
? ? ? ? ?Beacon(:,j)=[j;(j-1)*Dis;0];%沿區域一側生成信標節點坐標
? ? ? ? ?distance(:,j)=sqrt((Dx-((j-1)*Dis))^2+Dy^2);%計算移動節點到信標的距離
? ? ? ?end
? ? ? ?figure(1);

? ? ? ?
? ? ? ? ? ? %畫出節點部署圖 ? ?
% ? ? ? ? ? ? plot(Dx,Dy,'k.');
? ? ? ? ? ? hold on
% ? ? ? ? ? ? plot(Beacon(2,1:BeanconAmountA),Beacon(3,1:BeanconAmountA),'r*');
% ? ? ? ? ? ? xlim([0,BorderHeight]);
% ? ? ? ? ? ? ylim([0,BorderWidth]);
% ? ? ? ? ? ? title('* 紅色信標節點 . 黑色移動節點');
? ? ? ? %用標準RSSI方法測算距離
? ? ? ? Loc=LocByRssi(UN,Beacon,distance,BeanconAmountA,R,BigBeacon,Dis,Dx,Dy,m,SBeta);
? ? ? ? %用動態路徑衰落指數的RSSI方法測算距離
? ? ? ? ?X=LocByDRssi(UN,Beacon,distance,BeanconAmountA,R,BigBeacon,Dis,Dx,Dy,m,SBeta);

? ? ? ? %求點位誤差、橫向誤差、縱向誤差
? ? ? ? ?error1(1,m)=sqrt((abs(Dx-X(1)))^2+(abs(Dy-X(2)))^2);
? ? ? ? ?error1(2,m)=abs(X(1)-Dx);
? ? ? ? ?error1(3,m)=abs(X(2)-Dy);
? ? ? ? ?
? ? ? ? ?error2(1,m)=sqrt((abs(Dx-Loc(1)))^2+(abs(Dy-Loc(2)))^2);
? ? ? ? ?error2(2,m)=abs(Loc(1)-Dx);
? ? ? ? ?error2(3,m)=abs(Loc(2)-Dy);
? ? ? ? ?

? ? ? ? ?%統計兩種算法誤差落在1m以內的次數
? ? ? ? ?if error1(1,m)<1?
? ? ? ? ? ? gl1=gl1 +1;?
? ? ? ? ?end
? ? ? ? ?if error2(1,m)<1?
? ? ? ? ? ? gl2=gl2 +1;?
? ? ? ? ?end
? ? ? ? ?

? ? ? ? ?%統計兩種算法誤差落在1.5m以內的次數
? ? ? ? ?if error1(1,m)<1.5?
? ? ? ? ? ? gl3=gl3+1;?
? ? ? ? ?end
? ? ? ? ?if error2(1,m)<1.5?
? ? ? ? ? ? gl4=gl4+1;?
? ? ? ? ?end
? ? end
? ?
? ? %統計動態beta值算法誤差落在1m、1.5m以內的概率
? ? gltj1(x,1)=(gl1/m)*100;
? ? gltj1(x,2)=(gl3/m)*100;
? ??
? ??
? ? %統計標準RSSI算法誤差落在1m、1.5m以內的概率
? ? gltj2(x,1)=(gl2/m)*100;
? ? gltj2(x,2)=(gl4/m)*100;
? ??

? ? max1(x,1)=max(error1(1,:));
? ? max1(x,2)=max(error1(2,:));
? ? max1(x,3)=max(error1(3,:));
? ? avg1(x,:)=mean(error1,2);
? ? std1(x,1)=std(error1(1,:));
? ? std1(x,2)=std(error1(2,:));
? ? std1(x,3)=std(error1(3,:));
? ??
? ? max2(x,1)=max(error2(1,:));
? ? max2(x,2)=max(error2(2,:));
? ? max2(x,3)=max(error2(3,:));
? ? avg2(x,:)=mean(error2,2);
? ? std2(x,1)=std(error2(1,:));
? ? std2(x,2)=std(error2(2,:));
? ? std2(x,3)=std(error2(3,:));
? ? error(x,:) = mean(error1(:,:),1);
end

for i=1:4
? ? wucha1(i)=((avg2(i,1)-avg1(i,1))/avg2(i,1))*100;
? ? wucha2(i)=((std2(i,1)-std1(i,1))/std2(i,1))*100;
end

max1
avg1
std1
??
max2
avg2
std2
??
wucha1
wucha2
??
gltj1
gltj2
Accuracy=error/R

figure;
plot(error(1,:),'-o');
title('移動節點的點位誤差')


figure;
plot(error(2,:),':+')
title('移動節點的縱向誤差')
? ?
figure;
plot(error(3,:),':+')
title('移動節點的橫向誤差')


figure;
plot(error(4,:),':+')
title('移動節點的橫向誤差2')
Aucc1=0;
Aucc2=0;
for m=i:LoopNum
? ? Aucc1=Aucc1+error(3,m);
? ? Aucc2=Aucc2+error(4,m);
end
Aucc1=Aucc1/LoopNum
Aucc2=Aucc2/LoopNum

?D148

總結

以上是生活随笔為你收集整理的基于MATLAB的RSSI定位算法仿真的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。