資源簡介
質心定位算法的MATLAB仿真,用于無線傳感器網絡的定位實驗。

代碼片段和文件信息
%?function?[Accuracy]=dingwei(BeaconAmount)?
BorderLength=100;%正方形區域的邊長?
UNAmount=60;?
BeaconAmount=20;
NodeAmount=UNAmount+BeaconAmount;%網絡節點個數?
R=50;%節點的通信距離?
%D=zeros(NodeAmountNodeAmount);%未知節電到信標節點距離初始矩陣;BeaconAmount行NodeAmount列?
%X=zeros(2UNAmount);%節點估計坐標初始矩?
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~在正方形區域內產生均勻分布的隨機拓撲
RandStream.setDefaultStream(RandStream(‘mt19937ar‘‘Seed‘sum(100*clock)))
C=BorderLength.*rand(2NodeAmount);?
C
pause
D=C.‘
pause
%figure(1);
%plot(D(:1)D(:2)‘ko‘)
%pause
%帶邏輯號的節點坐標?
Sxy=[[1:NodeAmount];C];?
Sxy
pause
Beacon=[Sxy(21:BeaconAmount);Sxy(31:BeaconAmount)];%信標節點坐標?
B=Beacon.‘
figure(1);
plot(B(:1)B(:2)‘ro‘)
hold?on;
pause
UN=[Sxy(2(BeaconAmount+1):NodeAmount);Sxy(3(BeaconAmount+1):NodeAmount)];%未知節點坐標??
U=UN.‘
plot(U(:1)U(:2)‘ko‘)
pause
sume=0;?
for?i=1:1:UNAmount???
????m=0;?
????sumx=0;?%x的累積值
????sumy=0;?%y的累積值?
????for?j=1:1:BeaconAmount??%n為信標節點個數?
????????if?sqrt(abs(UN(1i)-Beacon(1j))^2+abs(UN(2i)-Beacon(2j))^2)<=R?%x2、y2為網絡節點坐標,S.xd、S.yd為目標坐標?
???????????m=m+1;?
???????????sumx=sumx+Beacon(1j);?
???????????sumy=sumy+Beacon(2j);?
????????end?
?????end?
?????if?m==0?
??????????X(1i)=0;?
??????????X(2i)=0;?
?????end?
??????T.xd(i)=sumx./m;?
??????X(1i)=?T.xd(i);?%x的坐標平均值?
??????T.yd(i)=sumy./m;?
??????X(2i)=T.yd(i);??%y的坐標平均值?
??????error(1i)=sqrt(abs(UN(1i)-X(1i))^2+abs(UN(2i)-X(2i))^2);?
??????sume=sume+error(1i);?
end???
??figure;
??plot(error‘-o‘)
??pause
???Accuracy=sume/(UNAmount*R)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1666??2018-07-11?11:22??ZXDW.m
-----------?---------??----------?-----??----
?????????????????1666????????????????????1
- 上一篇:蟻群算法求解旅行商最優路徑問題
- 下一篇:基于DTW語音識別matlab代碼
評論
共有 條評論